假设我们有两张桌子:
Table Q
D E
a 1
b 2
g 1Table R
D E
f 1
b 2
h 3显示表Q和R之间的一组差的结果,我的答案是
D E
a 1
g 1但我的同学说老师的回答是
D E
a 1
g 1
f 1
h 3所以它看起来像是对称的差异,而不是真正的“差异”,哪一个答案是正确的?我的同学说这个问题用“中间”这个词,所以答案应该包括两个表格,但我不这么认为。
发布于 2019-10-07 18:15:12
SELECT Q.*
FROM Q LEFT JOIN R USING (D, E)
WHERE R.E IS NULL;SELECT A.* FROM
(SELECT Q.* FROM Q LEFT JOIN R
USING (D, E) WHERE R.E IS NULL) A
UNION
SELECT B.* FROM
(SELECT R.* FROM R LEFT JOIN Q
USING (D, E) WHERE Q.E IS NULL) B;发布于 2019-10-07 18:27:23
如果每个表中的(D,E)被根据索引设置为唯一:
SELECT D, E
FROM ( SELECT D, E FROM Q
UNION ALL
SELECT D, E FROM R ) S
GROUP BY D, E
HAVING COUNT(*) = 1如果没有这种限制(至少在一个表格中可能重复):
SELECT D, E
FROM ( SELECT D, E, 'Q' tab FROM Q
UNION ALL
SELECT D, E, 'R' FROM R ) S
GROUP BY D, E
HAVING COUNT(DISTINCT tab) = 1https://dba.stackexchange.com/questions/250452
复制相似问题