PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment comparer deux tables dans postgres

Eh bien, le plus facile à comprendre - mais pas nécessairement le plus rapide - est probablement quelque chose comme ça. (Mais vous pourriez vouloir dire autre chose par "comparer".)

-- Values in column1 that aren't in column2.
SELECT column1 FROM query1 
WHERE column1 NOT IN (SELECT column2 FROM query2);

-- Values in column2 that aren't in column1.
SELECT column2 FROM query2 
WHERE column2 NOT IN (SELECT column1 FROM query1);

-- Values common to both column1 and column2
SELECT q1.column1 FROM query1 q1
INNER JOIN query2 q2 ON (q1.column1 = q2.column2);

Vous pouvez également le faire dans une seule déclaration pour vous donner une comparaison visuelle. Une FULL OUTER JOIN renvoie toutes les valeurs dans les deux colonnes, avec les valeurs correspondantes dans la même ligne, et NULL où une colonne manque une valeur qui se trouve dans l'autre colonne.

SELECT q1.column1, q2.column2 FROM query1 q1
FULL OUTER JOIN query2 q2 ON (q1.column1 = q2.column2);