[英]SQL LEFT JOIN where clause with IN comparison
可能無意間偶然發現了一個好的SQL測試問題。
如果我做:
SELECT user.username FROM user WHERE user.username IN ('aname', 'bname', 'cname',...);
我得到了一個選定的用戶名列表,減去表中未找到的用戶名。
我真正想要的是列表中未找到的列表。
如果WHERE...IN
子句列表是一個表,則只需將其LEFT JOIN
移到用戶表上並過濾NULLs
。
有沒有一種方法可以不創建臨時表並將其連接到用戶表? 我猜是用戶表與WHERE...IN
子句的左連接?
我從未看過它,但是也許它存在。
您可以使用派生表和left join
來做到這一點:
SELECT l.name
FROM (SELECT 'aname' as name UNION ALL
SELECT 'bname' UNION ALL
SELECT 'cname' UNION ALL
. . .
) l LEFT JOIN
user u
ON u.username = l.name
WHERE u.username IS NULL
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.