在 SQL 查詢中,ROWNUM
是一個偽列(pseudocolumn),它表示查詢結果集中的行號。通常情況下,我們可以將 ROWNUM
與其他函數或條件結合使用,以實現特定的查詢需求。
以下是一些將 ROWNUM
與其他函數結合使用的示例:
WHERE
子句限制返回的行數:SELECT *
FROM (
SELECT employees.*, ROWNUM AS rn
FROM employees
WHERE ROWNUM <= 10
)
WHERE rn > 5;
在這個示例中,我們首先從 employees
表中選擇前 10 行,然后在外部查詢中過濾出行號大于 5 的行。
ORDER BY
對查詢結果進行排序:SELECT *
FROM (
SELECT employees.*, ROWNUM AS rn
FROM employees
ORDER BY salary DESC
)
WHERE rn <= 10;
在這個示例中,我們首先根據 salary
列對 employees
表進行降序排序,然后在外部查詢中選擇前 10 行。
GROUP BY
和聚合函數:SELECT department_id, COUNT(*)
FROM (
SELECT employees.*, ROWNUM AS rn
FROM employees
WHERE ROWNUM <= 10
)
GROUP BY department_id;
在這個示例中,我們首先從 employees
表中選擇前 10 行,然后在外部查詢中按 department_id
分組并計算每個部門的員工數量。
需要注意的是,ROWNUM
在 Oracle 數據庫中可用,但在其他數據庫(如 MySQL、PostgreSQL 等)中可能不可用。在這些數據庫中,你可以使用類似 LIMIT
和 OFFSET
的子句來實現類似的功能。