首页 > 解决方案 > SQL 排除另一个数据框列中的值

问题描述

假设我有两张桌子

第一表

ID 职业
电子烟 木匠
hjk 老师
科学家
dss 工程师

第二表

ID 状态
电子烟 功放
纽约
nbw 医学博士

现在我想编写一个查询来删除第一个表的行,如果 first_table.id 在 second_table.id 中。所以输出将是

ID 职业
hjk 老师
dss 工程师

我可以做到这一点的一种方法是编写一个 where 子句,然后将参数放入 where 子句中,例如

where first_table.id != moo and first_table.id != efg

但这需要我编写一些逻辑来确定要排除哪些数据,并且无论如何我都希望所有逻辑都在查询中。

标签: sql

解决方案


这听起来像not exists

select f.*
from first_database f
where not exists (select 1 from second_database s where s.id = f.id);

推荐阅读