提问者:小点点

中使用SQL得不匹配记录


假设我有一个员工姓名列表,我想选择具有这些姓名的所有行:

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

也许简和乔不在这张桌子上。我如何创建一个查询来标识我的列表中根本不存在的项目。

我不是在寻找任何特定的格式作为返回的结果;它可以是逗号分隔的,也可以是具有各自不匹配名称的行列表。


共1个答案

匿名用户

您需要将该列表另存为一个表,然后左转,用“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;