0

我的数据库中有 2 个表(A 和 B),我需要将两者合并。这两个表都具有复合键(九列)作为主键,并且表之间存在重复的行。

我可以使用“EXCEPT”来获取 SELECT A 的结果中存在的行,而不是 SELECT B 的结果中的行,但我还需要检索其他一起不重复行的列。IE

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,等等。

有没有办法解决这个问题?

4

1 回答 1

2

使用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
)
于 2015-03-26T18:54:56.710 回答