使用 SQL EXCEPT 仅通过主键

Using SQL EXCEPT just by primary key

我的数据库中有 2 个表(A 和 B),我需要合并它们。两个表都有组合键(九列)作为主键,并且表之间有重复的行。

我可以使用 'EXCEPT' 获取 SELECT A 结果中存在的行,但不存在 SELECT B 的结果中,但我还需要检索其他列不要重复行。即

SELECT ckA1, ckA2, ... ckA9, columnA1, columnA2, ... columnAN
FROM A
EXCEPT
SELECT ckB1, ckB2, ... ckB9, columnB1, columnB2, ... columnBN
FROM B

其中 ckA1 = ckB1,ckA2 = ckB2,... ckA9 = ckB9,但 columnA1 不一定等于 columnB1,columnA2 不一定等于 columnB2,等等

有办法解决吗?

使用NOT EXISTS运算符和相关子查询:

SELECT ckA1, ckA2, ... ckA9, columnA1, columnA2, ... columnAN
FROM A
WHERE NOT EXISTS (
  SELECT 1 FROM B
  WHERE ckA1 = ckB1, ckA2 = ckB2, ... ckA9 = ckB9
)