首页 > 解决方案 > 如何删除只有两列共有的两个不同表的重复值?

问题描述

我有两个表,只有两列共有,我想相互比较并删除公共列的重复项

例如表 A 有 4 列,表 B 有 6 列,我想获取表 A 的记录,但没有行匹配的记录(当两个公共列的值匹配时)

例如,在表 A 中常见的两列中有 code=x , Nature =y ,在表 B 中也有 code=x , Nature =y ,所以当我获取表 A 记录时应该删除这条记录......我正在使用 Visual Studio C#,但我不知道要执行什么查询来获取这些记录,请提供任何帮助

标签: c#sqldatabase

解决方案


一些方法(我在这里假设 SQL Server,因为您使用的是 VS 和 C#):

使用 EXCEPT(https://docs.microsoft.com/en-us/sql/t-sql/language-elements/set-operators-except-and-intersect-transact-sql?view=sql-server-ver15#examples )

SELECT
   a.Code,
   a.Nature
FROM dbo.TableA a

EXCEPT

SELECT 
   b.Code,
   b.Nature
FROM dbo.TableB b

或者,您可以在结果为 NULL 的情况下 LEFT JOIN TableB:

SELECT a.*
FROM dbo.TableA a
LEFT JOIN dbo.TableB b
   ON b.Code = a.Code
   AND b.Nature = a.Nature
WHERE b.Code IS NULL;

推荐阅读