📜  sql rownum - SQL (1)

📅  最后修改于: 2023-12-03 14:47:35.286000             🧑  作者: Mango

SQL中的ROWNUM

介绍

ROWNUM是Oracle SQL中的一个伪列(也称为虚拟列),可以返回查询结果的行数。在查询结果集中,ROWNUM是按照行的插入顺序进行排序,不会因为ORDER BY语句的改变而改变。ROWNUM值从1开始,每获取一条记录+1。

用法

ROWNUM可以在选择性查询中用作限制结果集中返回的记录数的查询条件。例如,以下查询将检索前10个客户的信息:

SELECT *
FROM customers
WHERE ROWNUM <= 10;

此查询将返回符合条件的前10个客户的所有信息。在这种情况下,我们可以使用ROWNUM来限制结果集的大小。

注意点

但是,需要注意的是,Oracle SQL对ROWNUM进行了一些优化,因此不能将ROWNUM与其它表达式结合使用。例如,以下查询将不会返回任何记录:

SELECT *
FROM customers
WHERE ROWNUM > 1;

这是因为判断ROWNUM > 1的条件在每行获取之后立即应用,因此只返回第一行。如果要将ROWNUM与其它表达式结合使用,可以使用嵌套查询或使用表达式,例如:

SELECT *
FROM (
    SELECT customers.*, ROWNUM rnum
    FROM customers
    WHERE ROWNUM <= 10
)
WHERE rnum > 5;

这将返回第6到第10行的记录。在这种情况下,我们使用嵌套查询将ROWNUM嵌入到查询内部,而不是在外部查询中使用它。

结语

ROWNUM是一个有用的Oracle SQL工具,可以将查询结果集的大小限制到特定的记录数。但是,在使用ROWNUM时需要注意其特殊行为和限制,以避免出现意外的结果。