有两张1W行左右的表,需要查询有差异的行,现在的代码如下:
SELECT number, version
FROM
(
SELECT a.number, b.version
FROM a
UNION ALL
SELECT b.number, b.version
FROM b
) tb
GROUP BY number, version
HAVING COUNT(*) = 1
ORDER BY number
但是问题来了,以上代码只能查询出不同的行,但是没法显示a表中有的b表中没有的,b表中有的a表中没有的,有没有办法可以在第3列标识出来?
按楼主意思,单表中number和version是不会重复的,两张表的number和version建一个复合索引,然后执行以下sql
试试
full join ... where a is null or b is null
。比如用Postgres:结果: