Terdapat dua jadual dengan kira-kira 10,000 baris Kami perlu menanyakan baris dengan perbezaan Kod semasa adalah seperti berikut:
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
Tetapi inilah masalahnya Kod di atas hanya boleh menanyakan baris yang berbeza, tetapi ia tidak boleh memaparkan yang dalam jadual a yang tiada dalam jadual b, dan yang dalam jadual b yang tiada dalam jadual a paparkan baris dalam lajur ketiga?
Mengikut poster asal, nombor dan versi dalam satu jadual tidak akan diulang. Cipta indeks komposit untuk nombor dan versi kedua-dua jadual, dan kemudian laksanakan sql berikut.
Cubalah
full join ... where a is null or b is null
. Contohnya, menggunakan Postgres:Hasil: