簡體   English   中英

使用 SQL IN 的不匹配記錄

[英]Non-matching records using SQL IN

假設我有一個員工姓名列表,我想 select 所有具有這些姓名的行:

SELECT * FROM employee WHERE name IN ('Chris', 'Bob', 'Jane', 'Joe')

或許 Jane 和 Joe 在此表中不存在。 如何創建一個查詢來標識我的列表中根本不存在的項目。

我不是在尋找任何特定格式作為返回結果; 它可以是逗號分隔的,也可以是具有各自不匹配名稱的行列表。

您需要將該列表保存為表格,然后與“員工”一起離開。

select lt.list_name, e.*
  from list_table lt
  left join employee e
    on e.name = lt.list_name;

這將 output 第一列中列表中的所有名稱以及員工表中的相應數據。 當“員工”表中沒有合適的記錄時,您將看到僅填充第一列。

如果您沒有足夠的權利來創建表,我認為只有一種方法可以達到預期的結果 - 它是使用 CTE:

with names_list(name) as (select 'Chris' union all select 'Bob' union all ...)
select nl.name, e.*
  from names_list nl
  left join employee e
    on e.name = nl.name;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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