我的数据库中有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等。
有没有办法解决这个问题?
答案 0 :(得分: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
)