我有两个结构相同的表,如下所示。我正在尝试编写查询以使用第一列的唯一键比较两个表,并尝试在第二列不匹配时返回值。 如果密钥不存在,则无需考虑该数据。仅当密钥在两个表中都存在时,我们才进行比较。
Table A
ColumnA ColumnB
A 1
B 2
C 2
D 8
Table B
ColumnC ColumnD
A 1
B 3
C 5
F 4
例如,将表A与表B进行比较时,上表的输出应为
B 2
C 2
并且将表B与A进行比较时应该是
B 3
C 5
理想情况下,基表应该有所不同。 我已经尝试过Joins and Unions,但是如上所述无法获取数据。
答案 0 :(得分:2)
INNER JOIN
。WHERE .. <> ..
将表A与表B进行比较时,我们只能获得表A的行:
SELECT
tA.*
FROM tableA AS tA
JOIN tableB AS tB
ON tB.ColumnC = tA.ColumnA
WHERE tB.ColumnD <> tA.ColumnB
将表B与表A进行比较时,只需仅从表B中获取行:
SELECT
tB.*
FROM tableA AS tA
JOIN tableB AS tB
ON tB.ColumnC = tA.ColumnA
WHERE tB.ColumnD <> tA.ColumnB
答案 1 :(得分:0)
我会做的:
SELECT t.*
FROM tablea t
WHERE EXISTS (SELECT 1 FROM tableb t1 WHERE t1.cola = t.cola AND t1.colb <> t.cold);
第二个版本也是如此,只需要滑动表名即可。
答案 2 :(得分:0)
使用EXISTS并全部合并
SELECT t.*
FROM tablea t
WHERE EXISTS (SELECT 1 FROM tableb t1 WHERE t1.cola = t.cola AND t1.colb <> t.colb)
union all
SELECT t.*
FROM tableb t
WHERE EXISTS (SELECT 1 FROM tablea t1 WHERE t1.cola = t.cola AND t1.colb <> t.colb)