mysql - 在我的案例中,如何从第一个表中找到第二个表中丢失的行?

标签 mysql sql sql-server database

<分区>

我有两个表。

表1:第一

--------------------------
|  iso          | WeldNo |
--------------------------
| AMD-11201-01  |     02 |
| RFG-11203-01  |     01 |
| AMD-11201-01  |     03 |
| RFG-11203-01  |     05 |

表2:第二

--------------------------
|  iso          | WeldNo |
--------------------------
| AMD-11201-01  |     02 |
| RFG-11203-01  |     01 |
| RFG-11203-01  |     05 |

预期结果:

--------------------------
|  iso          | WeldNo |
--------------------------
| AMD-11201-01  |     03 |

我试过查询但不会工作

select a.iso, a.WeldNo 
from first a 
where a.WeldNo, a.iso not in (select b.iso,b.WeldNo from second b);

请为我的场景提供解决方案

最佳答案

从问题的标签来看,您使用的是哪种 RDBMS 并不清楚。如果您使用的是 SQL Server,则可以使用 EXCEPT :

select a.iso, a.WeldNo 
from first a 

EXCEPT

select b.iso, b.WeldNo 
from second b

这将从 SELECT 语句中选择所有项目,除了在第二个 SELECT 语句中找到的项目。

如果您使用的是 MySQL,您可以稍微修正您的查询(即添加括号),您应该会得到一个有效的查询:

select a.iso, a.WeldNo 
from first a 
where (a.WeldNo, a.iso) not in (select b.WeldNo, b.iso from second b)

关于mysql - 在我的案例中,如何从第一个表中找到第二个表中丢失的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36826628/

相关文章:

php - 用 PDO 和准备好的语句替换 mysql_* 函数

sql - 插入带有列列表的并行 DML

mysql - MySQL 中的方括号 LIKE

MYSQL数据导入

mysql - 在表单上显示自动增量 ID 的方法?

php - 在计划外维护期间重定向

mysql - 如何将表中的每个人分别连接到数据库中的另一个表?

sql匹配条件

sql - 使用 SQL Server 创建 XML

sql - 在部署时将大量数据导入 SQL Server (Express) 数据库