[英]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.