rownum 和 distinct 的含义
2012-07-21 22:35
141 查看
rownum是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数.oracle在select出一条记录后便加上一个rownum, 而不等所有的结果都select出来后再加上rownum。
然后是distinct的工作原理。distinct是等记录集全部查询出后,然后进行排序,最后再删除重复数据,而不是边查边删除重复数据,因为这是不切实际的,毕竟又太多的位置数据。
所以会出现这样的情况:
这是因为在第二个sql查询时,先返回了前7个结果,然后才进行去重。如果想得到不重复的前7个结果,需要使用嵌套查询
然后是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中distinct的用法和left join查询的含义
- Oralce中的distinct和rownum(取非重复的前N条记录)
- Oracle中: distinct会影响rownum
- linux中shell变量$#,$@,$0,$1,$2的含义解释
- rownum rowId
- shell之dns_zone的配置含义
- Scala中“=>”用法及含义
- IPv6 Next Head扩展头部协议号取值范围及含义
- 源码中TODO、FIXME和XXX的含义
- <foreach collection="list" item="item" index="index" open="" close="" separator=";">属性的含义
- 关于DBA_USERS视图中ACCOUNT_STATUS 列的各种取值的含义说明
- Spring task 调度周期 Cron Expressions表达式含义
- Java中类、方法声明为静态的含义
- shiro过滤器过滤属性含义
- URL中特殊字符的含义
- 正则化、归一化含义解析
- day11_rowid、rownum、表分类
- stm32_002_stm32命名含义
- C++中extern “C”含义深层探索
- rowid and rownum