PostgreSQL Union, Union TOUS avec des exemples

⚡ Résumé intelligent

PostgreSQL UNION combine les résultats de deux ou plusieurs instructions SELECT en un seul ensemble de résultats et supprime les lignes en double, tandis que UNION ALL conserve chaque ligne, offrant une option plus rapide lorsque les doublons n'ont pas d'importance.

  • 🔗 Combiner: UNION fusionne les lignes de plusieurs instructions SELECT en un seul ensemble de résultats.
  • 🧹 Duplicats UNION supprime les lignes en double, tandis que UNION ALL conserve toutes les lignes correspondantes.
  • (I.e. Règles : Chaque requête SELECT doit renvoyer le même nombre de colonnes avec des types de données compatibles.
  • COMMANDÉ PAR: Une seule clause ORDER BY à la fin permet de trier l'ensemble des résultats combinés.
  • | Performance : L'opération UNION ALL est plus rapide car elle ignore l'étape de suppression des doublons.
  • 🤖 Aide IA : Les assistants IA alignent les colonnes et choisissent entre UNION et UNION ALL.

PostgreSQL UNION et UNION TOUS

Qu'est-ce que le PostgreSQL Syndicat?

Le PostgreSQL L'opérateur UNION est utilisé pour combiner les ensembles de résultats de plusieurs instructions SELECT en un seul ensemble de résultats. Toutes les lignes en double des résultats des instructions SELECT sont éliminées. L'opérateur UNION fonctionne dans deux conditions :

  • Les requêtes SELECT doivent renvoyer le même nombre de colonnes.
  • Les types de données de toutes les colonnes correspondantes doivent être compatibles.

L'opérateur UNION est normalement utilisé pour combiner les données de tables associées qui n'ont pas été parfaitement normalisées.

Syntaxe

SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)]
UNION
SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)];

Voici une explication des paramètres ci-dessus :

Les expression_1, expression_2,… expression_n sont les calculs ou colonnes que vous devez récupérer.

Les tables sont les tables à partir desquelles vous devez récupérer des enregistrements.

La ou les conditions WHERE sont les conditions qui doivent être remplies pour que les enregistrements soient récupérés.

À noter: L'opérateur UNION ne renvoyant pas de doublons, l'utilisation de UNION DISTINCT n'aura aucun impact sur les résultats.

PostgreSQL syndicat

L'opérateur UNION supprime les doublons, de la même manière que SÉLECTIONNER DISTINCT Oui. Prenons un exemple. Nous avons une base de données nommée Demo avec les tables suivantes :

Livre:

PostgreSQL syndicat

Le prix :

PostgreSQL syndicat

Exécutons la commande suivante :

SELECT id
FROM Book
UNION
SELECT id
FROM Price;

La commande renverra ce qui suit :

PostgreSQL syndicat

La colonne id apparaît dans les tableaux Livre et Prix. Cependant, il n’apparaît qu’une seule fois dans le résultat. La raison en est que PostgreSQL L'opérateur UNION ne renvoie pas de doublons.

PostgreSQL Union tout

Cet opérateur combine les jeux de résultats de plusieurs instructions SELECT sans supprimer les doublons. L'opérateur exige que chaque instruction SELECT ait un nombre similaire de champs dans des ensembles de résultats de types de données similaires.

syntaxe:

SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)]
UNION ALL
SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)];

Voici une explication des paramètres ci-dessus :

Les expression_1, expression_2,… expression_n sont les calculs ou colonnes que vous devez récupérer.

Les tables sont les tables à partir desquelles vous devez récupérer des enregistrements.

La ou les conditions WHERE sont les conditions qui doivent être remplies pour que les enregistrements soient récupérés.

À noter: Les deux instructions SELECT doivent comporter un nombre égal d'expressions.

Nous utiliserons les tableaux suivants :

Livre:

PostgreSQL Union tout

Le prix :

PostgreSQL Union tout

Exécutez la commande suivante:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

Il devrait renvoyer ce qui suit :

PostgreSQL Union tout

Les doublons n'ont pas été supprimés.

COMMANDÉ PAR

Le PostgreSQL L'opérateur UNION peut être utilisé avec la clause ORDER BY pour classer les résultats de la requête. Pour illustrer cela, nous utiliserons les tables suivantes :

Le prix :

COMMANDÉ PAR

Prix2 :

COMMANDÉ PAR

Voici la commande qui montre comment utiliser l'opérateur UNION avec la clause ORDER BY :

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price;

La commande renverra ce qui suit :

COMMANDÉ PAR

Les enregistrements ont été classés par colonne de prix. La clause classe les enregistrements par ordre croissant par défaut. Pour les classer par ordre décroissant, ajoutez la clause DESC comme indiqué ci-dessous :

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price DESC;

La commande renverra ce qui suit :

COMMANDÉ PAR

Les enregistrements ont été classés en fonction de la colonne de prix par ordre décroissant.

Quand utiliser Union et quand utiliser Union All ?

Utilisez l'opérateur UNION lorsque vous avez plusieurs tables de structure similaire, mais séparées pour une raison précise. Il est particulièrement utile pour supprimer les doublons.

Utilisez l'opérateur UNION ALL lorsque vous n'avez pas besoin de supprimer ou d'éliminer les enregistrements en double.

Utiliser pgAdmin

Voyons maintenant comment ces trois actions sont réalisées à l'aide de pgAdmin.

Comment utiliser PostgreSQL Union utilisant pgAdmin

Voici la procédure étape par étape pour utiliser PostgreSQL UNION via pgAdmin :

Étape 1) Connectez-vous à votre compte pgAdmin.

Étape 2) Dans la barre de navigation à gauche, cliquez sur Bases de données, puis sur Démo.

Utilisez le  PostgreSQL Union utilisant pgAdmin

Étape 3) Tapez la requête dans l'éditeur de requêtes :

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price DESC;

Étape 4) Cliquez sur le bouton Exécuter.

Utilisez le  PostgreSQL Union utilisant pgAdmin

Il devrait renvoyer ce qui suit :

Utilisez le  PostgreSQL Union utilisant pgAdmin

Union tout

Étape 1) Connectez-vous à votre compte pgAdmin.

Étape 2) Dans la barre de navigation à gauche, cliquez sur Bases de données, puis sur Démo.

Utilisez le  PostgreSQL Union Tous à l'aide de pgAdmin

Étape 3) Tapez la requête dans l'éditeur de requêtes :

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

Étape 4) Cliquez sur le bouton Exécuter.

Utilisez le  PostgreSQL Union Tous à l'aide de pgAdmin

Il devrait renvoyer ce qui suit :

Utilisez le  PostgreSQL Union Tous à l'aide de pgAdmin

COMMANDÉ PAR

L'opérateur UNION ALL peut être combiné avec la clause ORDER BY pour trier les résultats dans le jeu de résultats. Par exemple:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price
ORDER BY id;

La commande renverra ce qui suit :

Utilisez le  PostgreSQL COMMANDER PAR Utilisation de pgAdmin

Les résultats ont été ordonnés.

Téléchargez la base de données utilisée dans ce tutoriel

FAQ

UNION ALL est plus rapide car il concatène simplement les lignes. UNION, quant à lui, doit trier ou hacher les lignes combinées pour supprimer les doublons, ce qui engendre une surcharge. Lorsque les doublons ne posent pas de problème, UNION ALL est le choix le plus efficace.

Oui. Chaque instruction SELECT dans une UNION doit renvoyer le même nombre de colonnes, et les colonnes correspondantes doivent avoir des types de données compatibles dans le même ordre. Sinon PostgreSQL une erreur se produit et la requête échoue.

Oui. Les noms de colonnes peuvent différer car UNION associe les colonnes par position, et non par nom. Les types de données doivent néanmoins rester compatibles, et le jeu de résultats utilise les noms de colonnes de la première instruction SELECT.

L'opération UNION empile verticalement les lignes de deux ensembles de résultats en une seule liste de colonnes, en supprimant les doublons. L'opération JOIN combine horizontalement les colonnes de différentes tables en fonction d'une clé commune, élargissant ainsi les lignes au lieu de les concaténer.

La fonction ORDER BY trie le résultat final combiné, donc PostgreSQL N'autorise qu'une seule clause ORDER BY placée après la dernière instruction SELECT. Trier les requêtes individuelles au préalable n'aurait aucun sens une fois leurs lignes fusionnées.

Les assistants IA comme GitHub Copilot alignent les listes de colonnes de chaque SELECT, signalent les types de données incompatibles et recommandent UNION ou UNION ALL selon que les doublons doivent être conservés ou non, réduisant ainsi les erreurs de requête courantes.

Oui. En analysant vos tables et votre objectif, un assistant IA peut déterminer si des lignes en double sont possibles et pertinentes, puis suggérer UNION ALL lorsque les doublons sont acceptables pour gagner en vitesse, ou UNION lorsqu'ils doivent être supprimés.

L'opérateur UNION renvoie les lignes présentes dans au moins une des deux requêtes. L'opérateur INTERSECT renvoie uniquement les lignes présentes dans les deux requêtes, et l'opérateur EXCEPT renvoie les lignes présentes dans la première requête mais pas dans la seconde. Ces trois opérateurs suppriment les doublons par défaut.

Résumez cet article avec :