簡體   English   中英

SQL LEFT JOIN where子句與IN比較

[英]SQL LEFT JOIN where clause with IN comparison

可能無意間偶然發現了一個好的SQL測試問題。

  • 我有一個表,可以說約100個用戶名。
  • 我有一組10個可能的用戶名{aname,bname,cname,dname,...}

如果我做:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM