+ -
当前位置:首页 → 问答吧 → 为什么要把俩个条件分开写??

为什么要把俩个条件分开写??

时间:2011-09-19

来源:互联网

SELECT * FROM (
  SELECT ROWNUM AS my_rownum,table_a.* FROM
  ( select * from T where object_id=20) table_a  
  WHERE ROWNUM <= 160 ) WHERE my_rownum > 140;

作者: c504091680   发布时间: 2011-09-19

这是一个获取查询结果集中后20条记录很典型的写法。

作者: susu_0807   发布时间: 2011-09-19

表的嵌套查询,不知楼主说的那两个条件rownum<160还是my_rownum>140

作者: lzd_83   发布时间: 2011-09-19

因为ROWNUM是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集)。简单的说 rownum 是对符合条件结果的序列号。它总是从1开始排起的。所以你选出的结果不可能没有1,而有其他大于1的值;假如写 where rownum>140 and rownum<=160 总是会没有数据
这里需要把rownum作为一个实际存在的字段,然后限制my_rownum>140

作者: Rocky_Tian2012   发布时间: 2011-09-19

引用楼主 c504091680 的回复:
SELECT * FROM (
SELECT ROWNUM AS my_rownum,table_a.* FROM
( select * from T where object_id=20) table_a
WHERE ROWNUM <= 160 ) WHERE my_rownum > 140;

只能分开写。。。
不分开写,好象没法写。

作者: yixilan   发布时间: 2011-09-19

只要一次就可以了
SQL code

select *
  from (select t.*, rownum as rn from t)
 where rn > 140
   and rn <= 160;


作者: opps_zhou   发布时间: 2011-09-19

3楼说的前面的能理解。后面为什么条件加到一起就没有数据还是不太理解,能说的详细点吗??

作者: c504091680   发布时间: 2011-09-19

热门下载

更多