Sql 如何比较两个表?

Sql 如何比较两个表?,sql,tsql,sql-server-2017,Sql,Tsql,Sql Server 2017,这是我的问题 我想知道两个表之间的区别有一个特定的函数吗 根据定义,EXCEPT通过比较两个查询的结果返回不同的行 Exception从左输入查询返回右输入查询未输出的不同行 基本规则是: 列的编号和顺序在所有列中必须相同 查询。 数据类型必须兼容。 去 小提琴 您可以看到,使用EXCEPT生成的重复项,如果要消除此问题,可能需要为两个表都添加一个ID列,并将查询更新为: Select * from MyTableA as a where not exists (Select 1 from My

这是我的问题


我想知道两个表之间的区别有一个特定的函数吗

根据定义,EXCEPT通过比较两个查询的结果返回不同的行

Exception从左输入查询返回右输入查询未输出的不同行

基本规则是:

列的编号和顺序在所有列中必须相同 查询。 数据类型必须兼容。 去

小提琴

您可以看到,使用EXCEPT生成的重复项,如果要消除此问题,可能需要为两个表都添加一个ID列,并将查询更新为:

Select *
from MyTableA as a where not exists (Select 1 from MyTableB as b
where a.ColA = b.ColA and a.ColB = b.ColB and a.ID <> b.ID)
你也许在找我。样本数据和预期结果将帮助我们在这里帮助您。A*不在选择中*。。。没有任何意义;您需要在WHERE中比较标量值
CREATE TABLE MyTableA (ColA int, ColB int)
CREATE TABLE MyTableB (ColA int, ColB int)
INSERT INTO MyTableA (ColA, ColB) VALUES (15,1),(10,1),(2,1),(2,1),(16,1),(2,2),(3,3),(3,3)
INSERT INTO MyTableB (ColA, ColB) VALUES (1,1),(1,1),(1,1),(2,2),(4,5),(1,1),(4,5)
SELECT * FROM MyTableA
EXCEPT
SELECT * FROM MyTableB

Select *
from MyTableA as a where not exists (Select 1 from MyTableB as b
where a.ColA = b.ColA and a.ColB = b.ColB)
GO
ColA | ColB ---: | ---: 2 | 1 3 | 3 10 | 1 15 | 1 16 | 1 ColA | ColB ---: | ---: 15 | 1 10 | 1 2 | 1 2 | 1 16 | 1 3 | 3 3 | 3
Select *
from MyTableA as a where not exists (Select 1 from MyTableB as b
where a.ColA = b.ColA and a.ColB = b.ColB and a.ID <> b.ID)