-
對于多行子查詢可以使用in,any,all來操作。
查看全部 -
any代表的是子查詢中的某一個,也就是滿足一個成立就可以了,all代表的是子查詢的所以,也就是對于所有的都要滿足才行。具體是最大值還是最小值要額外分析。
查看全部 -
where后的條件如果有or的話一定要記得加(),不然會導致先執行and再執行or導致or的對象不是原本想要的運算的對象。
查看全部 -
where后的條件如果有or的話一定要記得加(),不然會導致先執行and再執行or導致or的對象不是原本想要的運算的對象。
查看全部 -
行號永遠按照默認的順序排序的,因為是先查出數據,查出數據的瞬間就會添加行號這個偽劣了,如果有order或group才會繼續執行,order一般是最后執行的,所以如果where rownuum<3 order by column是先選出3行在order,而不是order后再拿出三行,所以如果要top-N的問題的話是要使用子查詢先排序在選出rownum<3或者使用row_num再選出前3的數據。
查看全部 -
group by后面不能使用子查詢。
查看全部 -
不可以在group by子句后面使用子查詢。
查看全部 -
自連接至少需要數據數目的平方,所以自連接不適合大表的數據,大表的自連接可以使用層次查詢來實現。
查看全部 -
分層查詢使用connect by prior empno=mgr start with mgr is null/start with empno=7658;分層查詢有一個偽劣是level,代表著分層查詢時的層次,從第一層開始算。
查看全部 -
對于between來說小值必須在左邊,大值必須在右邊。
查看全部 -
select max(avg(sal)) from emp group by deptno;這里使用了兩個分組函數嵌套起來,如果是前面加了個deptno就會報錯。
查看全部 -
orderby可以根據列,別名,表達式,序號進行排序。
查看全部 -
having和where在沒有分組函數的時候是可以通用的,但是having可以使用分組,但是where不能使用分組。沒有分組的時候應該優先使用where,因為where的效率更高,where是先篩選數據再進行分組運算,而having是先分組運算在篩選數據,所以分組運算的數據更多,where分組運算的數據更少。
查看全部 -
重點糾錯,不是where和having不能共存,而是where中不能使用組函數,可以在having字句中使用組函數。
查看全部 -
分組函數會自己過濾掉控制,所以count的話是計算出不包含空的數目,所以要統計的時候可以使用*或者是唯一性列,計算平均值的時候如果有空值也要用nvl或者使用sum和count來計算,因為avg也是會忽略掉空值的。
查看全部
舉報