如何联接两个表并从第一个表返回不在第二个表中的值?

时间:2018-07-26 19:38:53

标签: sql

我有两个表,第一个表包含id和employee_name,第二个表包含employee_id(与id相同)和其他一些列。如何将第一个表与第二个表连接在一起,以便可以输出第一个表中没有出现的所有雇员ID(以及其余列)?我要查询的是:

select employee_id
from data2 left join data1 on data2.employee_id = data1.id
where employee_id is NULL

这将输出正确的行数,但是其中没有值。任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:3)

您的表在您的SQL中被翻转。根据您的叙述,SQL应该是:

brew services start postgresql

答案 1 :(得分:0)

您无需使用连接,只需使用'not in'子句

select id
from table1
where id not in (select employee_id from table2)

如果有效,请告诉我。

答案 2 :(得分:0)

如果我正确理解了您的问题,那么您想从data1的{​​{1}}列中的employee_id值中不存在id的记录。

以当前查询的结构方式,您要求输入data2,以便仅返回空记录。而是像这样查询employee_id ... where employee_id is NULL

data1

这使用子查询在select * from data1 where employee_id not in (select id from data2)中找到id值的列表,然后仅返回data2的{​​{1}}在该列表中的记录。