78. 他这个用Oracle特有的性质来做分页,要用到三层嵌套,为什么,他还搞了一个root用户不显示的功能。也就是说查询的时候不显示系统管理员的功能。
用* 不太明确,不用*太麻烦,各有优缺点。
select * from t_user where user_id <> 'root'; 现在root就没有了, 还要加order by user_id; 做这种集合查询一般要order by的。不能随便就出来。这样就排了一下序。
select * from t_user where user_id <> 'root' order by user_id;
select rownum * from t_user where user_id <> 'root' order by user_id;这样写会出错。不能直接*,还要给别名
select rownum , t.* from t_user t where user_id <> 'root' order by user_id;
现在来嵌套,嵌套的目的就是把nownum转出来嘛,怎么用,加循环,先写
select from () 再把下面的东西放进去,就可以了
select rownum * from t_user where user_id <> 'root' order by user_id;
select rownum rn t.* from (
select rownum * from t_user where user_id <> 'root' order by user_id
) t; 通过这个t可以把所有的东西查上来。那就是t.*,另外可以把nownum拿上来。拿上来,赋值给一个字段,rownum rn现在这个字段和nownum就没有关系了。
现在还要改,过滤一下。
select rownum * from t_user where user_id <> 'root' order by user_id
) t where rownum <=2;这不就是查前二条吗? 如果改成<=4,那么现在的情况是全部查出来了。还得过滤一下,想用rn就还得来一层循环。
select * from (
select rownum * from t_user where user_id <> 'root' order by user_id
) t where rownum <=4
) where rn>2; 这不就是查第二页不。写这种循环,里面开始写起,比较简单,一层一层明白你想干吗。