我有两个具有完全相同列的表
表A
标识标志
1 年
2 年
3 N
4 N
表 B
标识标志
1 年
2
3 N
4
我想在 Oracle 中编写一个选择查询,它将显示表 A 中的所有行,其中 FLAG
列与表 B 不同,但具有匹配的 ID 列
结果应该如下。
标识标志
2 年
4 N
最佳答案
“表 A 中的所有行......作为表 B 具有匹配 ID 的列”:
FROM a JOIN b USING (id)
“其中 FLAG 列不相同”:
WHERE a.flag != b.flag
OR (a.flag IS NULL AND b.flag IS NOT NULL)
OR (b.flag IS NULL AND a.flag IS NOT NULL)
所以,查询将是
SELECT id, a.flag
FROM a JOIN b USING (id)
WHERE a.flag != b.flag
OR (a.flag IS NULL AND b.flag IS NOT NULL)
OR (b.flag IS NULL AND a.flag IS NOT NULL)
WHERE
-condition 很难看,但对于捕获表 b 具有 NULL
的情况是必要的-value,但不是,或者相反......
关于sql - 比较两个表中的记录并突出显示差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13916969/