sql,EXISTS用法
EXISTS
指定一個子查詢,檢測行的存在。
語法
EXISTS subquery
參數(shù)
subquery
是一個受限的 SELECT 語句 (不允許有 COMPUTE 子句和 INTO 關(guān)鍵字)
結(jié)果類型
Boolean
結(jié)果值
如果子查詢包含行,則返回 TRUE. EXISTS(SELECT NULL)也返回True
?
SELECT c.CustomerID, CompanyName FROM Customers c
執(zhí)行結(jié)果:91條記錄
SELECT c.CustomerID, CompanyName
? FROM Customers c
?WHERE EXISTS(SELECT NULL)
執(zhí)行結(jié)果:91條記錄
?
找出所有下過訂單的客戶
使用EXISTS的寫法:
SELECT c.CustomerID, CompanyName
? FROM Customers c
?WHERE EXISTS
?(SELECT 1 FROM Orders o WHERE o.CustomerID = c.CustomerID)
執(zhí)行結(jié)果:89條記錄
?
使用in的寫法:
SELECT c.CustomerID, CompanyName
? FROM Customers c
where c.CustomerID in(select distinct CustomerID from Orders)
執(zhí)行結(jié)果:89條記錄
檢查:
SELECT c.CustomerID, CompanyName FROM Customers c
where c.CustomerID='ALFKI'
執(zhí)行結(jié)果:1條記錄
SELECT OrderID FROM Orders o
where o.CustomerID='ALFKI'
執(zhí)行結(jié)果:6條記錄
?
SELECT c.CustomerID, CompanyName
? FROM Customers c
?WHERE EXISTS
?(SELECT OrderID FROM Orders o WHERE o.CustomerID = c.CustomerID) and c.CustomerID='ALFKI'
執(zhí)行結(jié)果:1條記錄
找出所有沒下過訂單的客戶
使用NOT EXISTS的寫法:
SELECT c.CustomerID, CompanyName
? FROM Customers c
?WHERE NOT EXISTS
?(SELECT 1 FROM Orders o WHERE o.CustomerID = c.CustomerID)
執(zhí)行結(jié)果:2條記錄
?
使用NOT IN的寫法:
SELECT c.CustomerID, CompanyName
? FROM Customers c
where c.CustomerID not in(select distinct CustomerID from Orders)
執(zhí)行結(jié)果:2條記錄
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/sangsmart/archive/2010/03/19/1689992.html
總結(jié)
以上是生活随笔為你收集整理的sql,EXISTS用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTTP状态列表
- 下一篇: 根据姓名得到名字首字母