各資料庫取前 N 筆/分頁語法差異大,整理速查表供開發參考:
| 資料庫 | 語法 | 範例 | 備註 |
|---|---|---|---|
| Oracle | WHERE ROWNUM <= N |
SELECT * FROM t WHERE ROWNUM <= 10 |
偽欄位,12c+ 支援 OFFSET/FETCH |
| Informix | SELECT FIRST N * FROM t |
SELECT FIRST 10 * FROM t |
|
| DB2 | FETCH FIRST N ROWS ONLY |
SELECT * FROM t FETCH FIRST 10 ROWS ONLY |
或 ROW_NUMBER() OVER() 視窗函數 |
| SQL Server | SELECT TOP N * FROM t |
SELECT TOP 10 * FROM t |
2012+ 支援 OFFSET/FETCH |
| Sybase | SET ROWCOUNT N; SELECT * FROM t |
SET ROWCOUNT 10; SELECT * FROM t |
Session 級別影響,用畢需重設 |
| MySQL | SELECT * FROM t LIMIT N |
SELECT * FROM t LIMIT 10 |
分頁 LIMIT offset, count |
| FoxPro | SELECT * TOP N FROM t ORDER BY col |
SELECT * TOP 10 FROM t ORDER BY id |
需搭配 ORDER BY |
SELECT * FROM table
ORDER BY key
OFFSET M ROWS FETCH NEXT N ROWS ONLY
OFFSET 效能遞減,考慮游標式分頁 (WHERE id > last_id)ORDER BY 確保結果確定性收藏此表,跨資料庫開發不再查文件。