1.HAVING和WHERE:
WHERE 和 HAVING 的作用物件不一樣,WHERE作用于基本表或視圖,挑出滿足條件的元組,HAVING作用于組(group),一般配合GROUP BY 使用,
2.ANY 和 ALL:
all 是將后面的內容看成一個整體,
如: >all (select age from student where sex = 'girl')上面一句陳述句表示比所有女生年紀大(比年紀最大的女生的年紀還要大)相當于內容的 and 陳述句,
如果是any,它表示其中任意一個條件都可以 >any (select age from student where sex = 'girl')
這一句表示的意思是,只要比任意一個女生年紀大就可以了(比年紀最小的女生的年紀大)相當于內容中添加了or 陳述句,
其他還有很多種應用,比如<>ANY 代表 不等于查詢結果中的某個值,
3.IN和EXIST:
EXIST:存在,后面一般都是子查詢,當子查詢回傳行數時,exists回傳true,如果內層查詢結果為null的話,回傳false.
select * from class where exists (select'x"form stu where stu.cid=class.cid)
當in和exists在查詢效率上比較時,in查詢的效率快于exists的查詢效率 ,
exists(xxxxx)后面的子查詢被稱做相關子查詢, 他是不回傳串列的值的.
IN:包含 ,查詢和所有女生年齡相同的男生 select * from stu where sex='男' and age in(select age from stu where sex='女')
in()后面的子查詢 是回傳結果集的,換句話說執行次序和exists()不一樣.
子查詢先產生結果集, 然后主查詢再去結果集里去找符合要求的欄位串列去.符合要求的輸出,反之則不輸出.
參考:https://www.cnblogs.com/xuanhai/p/5810918.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/11331.html
標籤:SQL Server
下一篇:Failed to restart Polybase Data Movement service after running sp_polybase_join_group
