假设我有一个员工姓名列表,我想选择具有这些姓名的所有行:
SELECT * FROM employee WHERE name IN ('Chris', 'Bob', 'Jane', 'Joe')
也许简和乔不在这张桌子上。我如何创建一个查询来标识我的列表中根本不存在的项目。
我不是在寻找任何特定的格式作为返回的结果;它可以是逗号分隔的,也可以是具有各自不匹配名称的行列表。
您需要将该列表另存为一个表,然后左转,用“employees”连接它。
select lt.list_name, e.*
from list_table lt
left join employee e
on e.name = lt.list_name;
这将输出第一列中列表中的所有名称以及employees表中的相应数据。当“Employees”表中没有合适的记录时,您将看到只填充第一列。
如果您没有足够的权限来创建表,我认为只有一种方法可以达到预期的结果,那就是使用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;