您的位置:首页 > 数据库 > Oracle

rownum 和 distinct 的含义

2012-07-21 22:35 141 查看
rownum是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数.oracle在select出一条记录后便加上一个rownum,   而不等所有的结果都select出来后再加上rownum。

然后是distinct的工作原理。distinct是等记录集全部查询出后,然后进行排序,最后再删除重复数据,而不是边查边删除重复数据,因为这是不切实际的,毕竟又太多的位置数据。

所以会出现这样的情况:

SQL> select distinct customerid from cn;

CUSTOMERID
----------------------------------------
005
004
008
002
006
001
007
003

已选择8行。

SQL> select distinct customerid
2  from cn
3  where rownum < 8;

CUSTOMERID
----------------------------------------
002
001
003

已选择3行。

  这是因为在第二个sql查询时,先返回了前7个结果,然后才进行去重。如果想得到不重复的前7个结果,需要使用嵌套查询

SQL> select *
2  from
3  ( select distinct customerid
4    from cn
5  )
6  where rownum < 8;

CUSTOMERID
----------------------------------------
001
002
003
004
005
006
007

已选择8行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql oracle 工作