Il existe deux tables avec environ 10 000 lignes. Nous devons interroger les lignes avec des différences. Le code actuel est le suivant :
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
Mais voici le problème. Le code ci-dessus ne peut interroger que différentes lignes, mais il ne peut pas afficher celles du tableau a qui ne sont pas dans le tableau b, ni celles du tableau b qui ne sont pas dans le tableau a. afficher les lignes de la troisième colonne ?
Selon l'affiche originale, le numéro et la version dans une seule table ne seront pas répétés. Créez un index composite pour le numéro et la version des deux tables, puis exécutez le sql
suivant.Essayez-le
full join ... where a is null or b is null
. Par exemple, en utilisant Postgres :Résultat :