| 資料庫 | 隨機取 N 筆語法 | 關鍵函數/機制 |
|---|---|---|
| SQL Server | SELECT TOP N * FROM Table ORDER BY NEWID() |
NEWID() 生成唯一識別碼,每行產生隨機 GUID 排序 |
| MySQL | SELECT * FROM Table ORDER BY RAND() LIMIT 10 |
RAND() 返回 0~1 隨機浮點數,配合 LIMIT 截取 |
| Oracle | SELECT * FROM (SELECT * FROM t ORDER BY DBMS_RANDOM.VALUE) WHERE ROWNUM < 10 |
DBMS_RANDOM.VALUE 產生隨機值,子查詢排序後用 ROWNUM 截取 |
| Access | |
VBA Rnd() 配合欄位值產生偽隨機排序,ID 可換為任何數值欄位 |
NEWID() 掃描全表,百萬級資料較慢,可考慮 TABLESAMPLE 或應用層抽樣ORDER BY RAND() 會建立臨時表並檔案排序,大表效能極差,建議改用 WHERE RAND() < (SELECT ((10/COUNT(*))*10) FROM Table) 等近似算法SAMPLE 子句(區塊抽樣)IN 查詢TABLESAMPLE(10 PERCENT)、Oracle SAMPLE(10))