在 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
的子句来实现类似的功能。