【SQL】IN,NOT IN,EXISTS,NOT EXISTS的用法和差别

IN, NOT IN : 後面接的子查詢只能接單一欄位的值   ex: SELECT pub_id FROM titles

EXISTS, NOT EXISTS : 後面接的子查詢可以單一欄位的值,也可以完整的語句  ex: SELECT * FROM titles

IN ,EXISTS : 存在於 ;  NOT IN , NOT EXISTS : 不存在於

Ex:

SELECT ProductID, ProductName FROM Northwind.dbo.Products WHERE CategoryID = 1 OR CategoryID = 4 OR CategoryID = 5

SELECT ProductID, ProductName FROM Northwind.dbo.Products WHERE CategoryID IN (1, 4, 5)

以上兩個是相同結果


SELECT DISTINCT pub_name FROM publishers WHERE EXISTS (SELECT * FROM titles WHERE pub_id = publishers.pub_id AND type ='business')

SELECT distinct pub_name FROM publishers WHERE pub_id IN (SELECT pub_id FROM titles WHERE type = 'business')

以上兩個是相同結果

留言

這個網誌中的熱門文章

【ASP】日期轉換(西元<-->民國)

【VB】使用NPOI元件來匯出Excel--DataTableToExcel

【SQL】符號切割字串變成多欄