sql - 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
但这需要我编写一些逻辑来确定要排除哪些数据,并且无论如何我都希望所有逻辑都在查询中。
解决方案
这听起来像not exists
:
select f.*
from first_database f
where not exists (select 1 from second_database s where s.id = f.id);
推荐阅读
- r - 考虑 R 中中介分析中的聚类标准误差
- docker - 对两个 Docker 容器使用相同的卷
- postgresql - 将值从 With..as 传递到函数 (POSTGRESQL)
- mysql - 使用spring boot将对象列表持久化到MYSQL数据库中的问题
- linux - 我的别名是指旧别名而不是新别名
- sql - 自动创建一个视图,将所有其他具有相同名称但不同前缀和不同模式的视图联合起来
- powershell - 在 PowerShell 脚本中使用自定义消息框 - 如何使其支持多行并支持从右到左的语言,如阿拉伯语
- perl - 可以在 perl 中定义其值不能在子例程中更改的变量吗?
- python - 操作/重新编码 Pandas 数据框
- c# - System.Diagnostics.Process 立即关闭 powershell