Oracle学习 第5天之高级查询
逼着自已每天学一些,哪怕半小时
1、子查询:貌似和MsSQL差不多。有个ANY和ALL,忘了MsSQL有没有
SELECT * FROM emp
WHERE sal > ANY (SELECT SAL FROM EMP WHERE DEPTNO = 30)
大于任意值,即大于最小值,也可写成 > (SELECT MIN(SAL) FROM EMP WHERE DEPTNO = 30)
2、子查询中的空值
IN的话没问题,NOT IN碰到空就不行了,不知MsSQL会不会这样
IN等同于ANY,NOT IN等同于<> ALL
a not in (10, 20, null)
等同于a!=10 and a!=20 and a!=null
而判断null不能用=,只能用 IS NULL,所以会无返回值
一种改进是在子查询中加上 WHERE XX IS NOT NULL
3、rownum行号只能<和<=,用了>或>=无效,但不报错。。。
4、分页:不能像MySQL一样Limit了,Oracle分页还是利用rownum,但要嵌套子查询,而且要嵌两层。。。最里面的是自带的rownum,然后子查询中把rownum当作一列使用