使用 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
)
我的数据库中有 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
)