Qu'est-ce que PostgreSQL Union?
L'opérateur PostgreSQL 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 travaille sous deux conditions:
- Les requêtes SELECT DOIVENT retourner un nombre similaire de requêtes.
- Les types de données de toutes les colonnes correspondantes doivent être compatibles.
L'opérateur UNION est normalement utilisé pour combiner des données de tables liées qui n'ont pas été parfaitement normalisées.
Dans ce didacticiel PostgreSQL, vous apprendrez:
- Qu'est-ce que PostgreSQL Union?
- Syntaxe
- syndicat
- Union tout
- COMMANDÉ PAR
- Quand utiliser Union et quand utiliser Union all?
- Utilisation de pgAdmin
Syntaxe
SELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)]UNIONSELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)];
Voici une explication des paramètres ci-dessus:
Les expressions_1, expression_2,… expression_n sont les calculs ou les colonnes que vous devez récupérer.
Les tables sont les tables à partir desquelles vous devez récupérer des enregistrements.
Les conditions WHERE sont les conditions qui doivent être remplies pour que les enregistrements soient récupérés.
Remarque: puisque l'opérateur UNION ne renvoie pas de doublons, l'utilisation de UNION DISTINCT n'aura aucun impact sur les résultats.
syndicat
L'opérateur UNION supprime les doublons. Laissez-nous vous le démontrer.
Nous avons une base de données nommée Demo avec les tables suivantes:
Livre:
Prix:
Exécutons la commande suivante:
SELECT idFROM BookUNIONSELECT idFROM Price;
La commande renverra ce qui suit:
La colonne id apparaît à la fois dans les tables Book et Price. Cependant, il n'apparaît qu'une seule fois dans le résultat. La raison en est que l'opérateur PostgreSQL UNION ne renvoie pas de doublons.
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 les ensembles de résultats de types de données similaires.
Syntaxe:
SELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)]UNION ALLSELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)];
Voici une explication des paramètres ci-dessus:
Les expressions_1, expression_2,… expression_n sont les calculs ou les colonnes que vous devez récupérer.
Les tables sont les tables à partir desquelles vous devez récupérer des enregistrements.
Les conditions WHERE sont les conditions qui doivent être remplies pour que les enregistrements soient récupérés.
Remarque: les deux expressions doivent avoir un nombre égal d'expressions.
Nous utiliserons les tableaux suivants:
Livre:
Prix:
Exécutez la commande suivante:
SELECT idFROM BookUNION ALLSELECT idFROM price;
Il doit renvoyer ce qui suit:
Les doublons n'ont pas été supprimés.
COMMANDÉ PAR
L'opérateur PostgreSQL UNION peut être utilisé avec la clause ORDER BY pour ordonner les résultats de la requête. Pour le démontrer, nous utiliserons les tableaux suivants:
Prix:
Prix2:
Voici la commande qui montre comment utiliser l'opérateur UNION avec la clause ORDER BY:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price;
La commande renverra ce qui suit:
Les enregistrements ont été classés par colonne de prix. La clause classe les enregistrements dans l'ordre croissant par défaut. Pour les classer par ordre décroissant, ajoutez la clause DESC comme indiqué ci-dessous:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;
La commande renverra ce qui suit:
Les enregistrements ont été classés en fonction de la colonne de prix dans l'ordre décroissant.
Quand utiliser Union et quand utiliser Union all?
Utilisez l'opérateur UNION lorsque vous avez plusieurs tables avec une structure similaire mais divisées pour une raison. C'est bien lorsque vous devez supprimer / éliminer les enregistrements en double.
Utilisez l'opérateur UNION ALL lorsque vous n'avez pas besoin de supprimer / éliminer les enregistrements en double.
Utilisation de pgAdmin
Voyons maintenant comment les trois actions se sont exécutées à l'aide de pgAdmin.
syndicat
Pour accomplir la même chose via pgAdmin, procédez comme suit:
Étape 1) Connectez-vous à votre compte pgAdmin.
Étape 2)
- Dans la barre de navigation sur la gauche, cliquez sur Bases de données.
- Cliquez sur Démo.
Étape 3) Tapez la requête dans l'éditeur de requête:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;
Étape 4) Cliquez sur le bouton Exécuter.
Il doit renvoyer ce qui suit:
Union tout
Étape 1) Connectez-vous à votre compte pgAdmin.
Étape 2)
- Dans la barre de navigation sur la gauche, cliquez sur Bases de données.
- Cliquez sur Démo.
Étape 3) Tapez la requête dans l'éditeur de requête:
SELECT idFROM BookUNION ALLSELECT idFROM price;
Étape 4) Cliquez sur le bouton Exécuter.
Il doit renvoyer ce qui suit:
COMMANDÉ PAR
L'opérateur UNION ALL peut être combiné avec la clause ORDER BY pour classer les résultats dans le jeu de résultats. Par exemple:
SELECT idFROM BookUNION ALLSELECT idFROM priceORDER BY id;
La commande renverra ce qui suit:
Les résultats ont été classés.
Résumé:
- L'opérateur PostgreSQL UNION combine les résultats de plusieurs instructions SELECT en un seul jeu de résultats.
- L'opérateur UNION ne renvoie pas les enregistrements en double.
- Pour trier les résultats, combinez-le avec la clause ORDER BY.
- L'opérateur UNION ALL combine les résultats de plusieurs instructions SELECT en un seul jeu de résultats.
- L'opérateur UNION ALL ne supprime pas les doublons.
Téléchargez la base de données utilisée dans ce didacticiel