这是我的问题
select * from table as a where a.* not in (select * from table B)
我想知道两个表之间的区别有一个特定的函数吗?
sbtkgmzw1#
根据定义,except通过比较两个查询的结果返回不同的行。except返回左输入查询中不由右输入查询输出的不同行。基本规则是:在所有查询中,列的数目和顺序必须相同。数据类型必须兼容。
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
db<>在这里摆弄您可以看到,使用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)
1条答案
按热度按时间sbtkgmzw1#
根据定义,except通过比较两个查询的结果返回不同的行。
except返回左输入查询中不由右输入查询输出的不同行。
基本规则是:
在所有查询中,列的数目和顺序必须相同。
数据类型必须兼容。
去
db<>在这里摆弄
您可以看到,使用except生成的重复条目,如果要消除此问题,可能需要为两个表都添加一个id列,并将查询更新为: