首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Oracle SQL 查詢某值在第幾行:ROW_NUMBER() 窗口函數

     編輯:程式設計綜合問答

需求

表 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)。
  • 外層查詢過濾目標 code,得到其行號。

若無排序欄位

資料庫表**無固有順序**,必須指定 ORDER BY 欄位 (如 code、id、建立時間),否則「第幾行」無意義。

替代:ROWNUM (僅 Oracle)

SELECT code, name, rownum
FROM (
    SELECT code, name FROM user ORDER BY code
)
WHERE code = '005';

ROWNUM 為查詢結果集順序號,需子查詢先排序。

效能建議

若頻繁查詢行號,考慮建立**索引組織表 (IOT)** 或**物化視圖**預計算行號。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved