表 user(code, name),查詢 code='005' 的資料在第幾行 (按 code 排序)。
SELECT code, name, row_num
FROM (
SELECT code, name, ROW_NUMBER() OVER (ORDER BY code) AS row_num
FROM user
) t
WHERE code = '005';
ROW_NUMBER() OVER (ORDER BY code) 為每行按 code 排序分配唯一序號 (1-based)。資料庫表**無固有順序**,必須指定 ORDER BY 欄位 (如 code、id、建立時間),否則「第幾行」無意義。
SELECT code, name, rownum
FROM (
SELECT code, name FROM user ORDER BY code
)
WHERE code = '005';
ROWNUM 為查詢結果集順序號,需子查詢先排序。
若頻繁查詢行號,考慮建立**索引組織表 (IOT)** 或**物化視圖**預計算行號。