有兩張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:結果: