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 :