美文网首页
rownum使用的时候注意点

rownum使用的时候注意点

作者: 悠悠神代不曾闻 | 来源:发表于2017-01-25 16:36 被阅读100次

    rownum不能随便用“>、>=、=、between...and”运算符,
    只能用如下运算符号“<、<=、!=”
    并非说用“>、>=、=、between..and”时会提示SQL语法错误,而是经常是一条数据也查不出来,

    举例:rownum>2,没有查询到任何记录,因为rownum总是从1开始的,第一条不满足去掉的话,
    第二条的rownum又成了1,依此类推,所以永远没有满足条件的记录。

    解决方法:
    可以使用下面的子查询方法来解决。
    注意子查询中的rownum必须要有别名,否则仍然会查不到记录,这是因为rownum不是某个表的列。
    如果不起别名的话,无法知道rownum是子查询的列,还是主查询的列。

    例:SQL>select rownum,id,age,name 
          from(select rownum rn ,id,age,name 
             from loaddata) 
         where rn > 2;
    

    可能有时候需要查询rownum在某区间的数据,从上可以看出rownum对小于某值的查询条件是认为true的。
    rownum对于大于某值的查询条件直接认为是false的,但是可以间接的让它转为认为是true的,那就必须使用子查询。
    例如要查询rownum在第二行到第三行之间的数据,包括第二行和第三行数据,那么只能写以下语句,先让它返回小于等于三的记录行,
    然后在主查询中判断新的rownum的“别名列”大于等于二的记录行。
    但是这样的操作会在大数据集中影响到检索速度。

    例:SQL>select * 
          from (select rownum rn,id,age,name 
                  from loaddata 
                 where rownum <= 3 ) 
         where rn >= 2; 
    

    必须是里面小,外面大。

    rownum是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集)。
    简单的说rownum是对符合条件结果的序列号。
    它总是从1开始排起的。所以,选出的结果不可能没有1,反而有其他大于1的值。

    相关文章

      网友评论

          本文标题:rownum使用的时候注意点

          本文链接:https://www.haomeiwen.com/subject/jzntittx.html