mysql - MySQL:如果第二个表中没有匹配的行,如何从第一个表中选择一行
问题描述
表1(数字主键):
- id-1, number-123, name-asd
- id-2, number-124, name-asd
表2(编号可重复,id pk):
- id-1, number-123, name-asd
- id-2, number-123, name-das
- id-3, number-124, name-rrr
- id-4, number-124, name-asx
想要的输出:
124, asd
我必须将第一个表的行与第二个表中的行进行比较。
如果第 1 行不等于第二行中的每一行,a.number = b.number
那么我们应该执行select * from table1
。
如果我们找到匹配的行(在表 1 和表 2 之间),那么我们不应该执行上面找到的选择查询。
更新:如何比较 3 个这样的表?
解决方案
一个简单的选择左连接两个表,并过滤第二个表没有数据的行应该会给出您想要的结果。
SELECT *
FROM table1 a
LEFT JOIN table2 b
ON a.number = b.number AND a.name = b.name
WHERE b.id IS NULL
推荐阅读
- java - Azure Application Insights 能否通过 REST API 用作 APM?
- python - 衡量两个点云是否重叠的有效指标?
- python - 如何在运行时更改python的中间代码
- sql - 如何让 rows.Scan 更有效率?
- python-3.x - 如何从选项卡中获取图标(而不是从网站内容中)
- c# - InvalidCastException 将 PlayFab.Json.JsonObject 转换为 PlayFab.PlayFabResult C# PlayFab
- html - 如何将 HTML 中的项目与响应性对齐?
- azure - 数据资源管理器:自定义分区策略的大量范围
- amazon-web-services - 是否可以更改 AWS KMS CMK 的所有权?
- wordpress - 有没有办法阻止优惠被添加到订阅中