永发信息网

ibatis的sql语句,大神们来看一下

答案:3  悬赏:60  手机版
解决时间 2021-04-03 10:11
  • 提问者网友:心如荒岛囚我终老
  • 2021-04-03 04:34
ibatis的sql语句,大神们来看一下
最佳答案
  • 五星知识达人网友:想偏头吻你
  • 2021-04-03 06:00
oracle 中的rownum是个伪列,只有在有结果集的时候才有值;

内层先找到 rownum<=xxx 值:(rownum从1开始) 找到第一条记录 rownum =1, 1<=xxx正确,则返回该条记录,直到找到rownum= xxx的最后一条记录为止,因此内层 存在结果集了并且rownum还是从1(或者maxResult值)开始的值,因此,可以对着这个子查询 进行rownum>xxx操作了;

举个反例:表A中有100条数据

select * from a where rownum >= 50 and rownum <59;(该语句看似能查出10条记录,但是它一条记录也不会查出来)

分析:

先查找第一条记录 rownum 赋值为1 此时,1 <59 但是 1并不大于等于50 条件不符,

继续查找下一条 rownum 赋值为1 此时,1 <59 但是 1并不大于等于50 条件不符

直到 查询整个库 ,结果是没有符合条件的记录,因此就查不到记录了;

select * from (select rownum from a where rownum< 59) where rownum >=50

select rownum from a where rownum< 59

先查找第一条记录 rownum 赋值为1 此时,1 <59 条件符和,

继续找第二条记录 rownum此时赋值为2 ,2<59 条件符合,

直到 找到rownum = 58的记录为止,此时找到了所有符合条件的值,并且rownum是从1到58设值的, 此时就可以使用 >=50这个条件 将记录选出了;

------------------------------------

row_ 是子查询的一个别名,,
全部回答
  • 1楼网友:空山清雨
  • 2021-04-03 06:45
举个例子:
select a.* from (select b.* from table_b b) a where rownum<10;
这是个子查询,第二个'select b.* from table_b b' 查询的结果集作为临时表,取个新名'a',
rownum是控制查询结果的条数,上面显示查询前9条数据追问1、第三行SELECt ic.*,rownum rownum_ FROM,这里是不是直接SELECt ic.*,rownum FROM也可以?
2、最后面的
WHERe rownum <= #maxResult# )
row_ WHERe row_.rownum_ > #firstResult#
]]>
我看不太懂!【WHERe rownum <= #maxResult# )】我明白,再往后直接就跟了
【row_ WHERe row_.rownum_ > #firstResult#】
什么意思啊这个【row_】和【row_.rownum】哪里来的?row_可以连接两个where?
  • 2楼网友:西风乍起
  • 2021-04-03 06:36
编上序号的意思 自动从1开始排列
name age rownum_
tom 12 1
jack 11 2
...
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯