标签:
创建测试用表:
CREATE OR REPLACE VIEW V AS SELECT ‘a‘ AS c FROM dual UNION ALL SELECT ‘b‘ AS c FROM dual UNION ALL SELECT ‘c‘ AS c FROM dual UNION ALL SELECT ‘d‘ AS c FROM dual UNION ALL SELECT ‘e‘ AS c FROM dual; SELECT * FROM v;
如果要查询前两条数据,可以使用伪列rownum来完成:
SELECT c FROM v WHERE ROWNUM < 3;
查询结果如下:
如果直接用rownum = 2来查询会出现什么情况呢?
SELECT c FROM v WHERE ROWNUM = 2;
查询结果如下:
这是因为rownum是对结果集加的一 个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集)。它总是从1开始排起的。所以你选出的结果不可能没有1,而有其他大于1的值。
正确的查询语句应该像下面这样,先生成序号:
SELECT c FROM (SELECT ROWNUM AS no, c FROM v) WHERE no = 2;
查询结果如下:
标签:
原文地址:http://www.cnblogs.com/minisculestep/p/4872674.html