DISTINCTE dans PostgreSQL : Sélectionner, trier par et limiter (exemples)

⚡ Résumé intelligent

DISTINCTE dans PostgreSQL Cette clause est utilisée avec une instruction SELECT pour supprimer les lignes en double et ne conserver que les valeurs uniques. Ce document aborde la syntaxe de SELECT, l'interface SQL Shell et pgAdmin, l'utilisation de DISTINCT sur une ou plusieurs colonnes, ainsi que la différence entre DISTINCT et GROUP BY.

  • ???? SÉLECTIONNER: Récupérer les colonnes d'une table avec SELECT column FROM table.
  • 🧹 DISTINCT: Supprimez les lignes en double et conservez une ligne par valeur unique.
  • COMMANDÉ PAR: Tri par ordre croissant par défaut, ou décroissant avec DESC.
  • (I.e. LIMITE: Limiter le nombre d'enregistrements renvoyés par la requête.
  • Outils: Exécutez les mêmes requêtes dans SQL Shell ou pgAdmin.

DISTINCTE dans PostgreSQL

Vous pouvez récupérer les données de la table à l'aide d'une instruction SELECT.

syntaxe:

SELECT [column names] FROM [table_name]

Ici,

  • Noms des colonnes : Nom des colonnes dont vous souhaitez récupérer la valeur.
  • DE: La clause FROM définit une ou plusieurs tables sources pour la requête SELECT.
  • nom de la table: Le nom d'une table existante que vous souhaitez interroger.

Qu'est-ce qui est DISTINCT dans PostgreSQL?

Le DISTINCT clause dans PostgreSQL L'instruction DISTINCT est utilisée avec une instruction SELECT pour supprimer les lignes en double du jeu de résultats. Lorsqu'une colonne contient des valeurs répétées, SELECT DISTINCT ne renvoie que les valeurs uniques.ping Une seule ligne par groupe de doublons. Ceci est utile pour obtenir une liste d'entrées distinctes, comme des villes de clients uniques ou des catégories de produits, sans répétition.

DISTINCT évalue toutes les colonnes listées dans l'instruction SELECT pour déterminer si une ligne est unique. PostgreSQL L'instruction DISTINCT ON renvoie la première ligne correspondant à chaque valeur distincte d'une expression spécifiée. Vous pouvez combiner DISTINCT avec ORDER BY pour contrôler les lignes affichées et avec LIMIT pour limiter le nombre de résultats.

PostgreSQL Sélectionnez l'instruction dans SQL Shell

Étape 1) Nous avons une table « tutorials » avec deux colonnes : « id » et « tutorial_name ». Interrogeons-la. Utilisez la requête suivante pour afficher les données de la table :

SELECT id,tutorial_name FROM tutorials;

PostgreSQL Sélectionnez l'instruction dans SQL Shell

NOTE: Utilisez la commande \c pour vous connecter à la base de données contenant la table que vous souhaitez interroger. Dans notre cas, nous sommes connectés à la base de données guru99.

Étape 2) Pour afficher toutes les colonnes d'un tableau, utilisez le caractère générique astérisque (*). Ce dernier vérifie toutes les possibilités et renvoie ainsi toutes les colonnes.

SELECT * FROM tutorials;

PostgreSQL Sélectionnez l'instruction dans SQL Shell

Il affiche tous les enregistrements de la table des tutoriels.

Étape 3) Vous pouvez utiliser la clause ORDER pour trier les données d'un tableau en fonction d'une colonne particulière. La clause ORDER organise les données dans l'ordre de A à Z.

SELECT * FROM tutorials ORDER BY id;

PostgreSQL Sélectionnez l'instruction dans SQL Shell

Vous pouvez trier de Z à A en utilisant « DESC » après l'instruction « ORDER BY ».

SELECT * FROM tutorials ORDER BY id DESC;

PostgreSQL Sélectionnez l'instruction dans SQL Shell

Étape 4) La fonction SELECT DISTINCT dans PostgreSQL La clause peut être utilisée pour supprimer les lignes en double du résultat. Il conserve une ligne pour chaque groupe de doublons.

Syntax:
SELECT DISTINCT column_1 FROM table_name;

Examinons Postgres pour sélectionner les valeurs d'identifiant distinctes de notre table à l'aide de requêtes distinctes. PostgreSQL:

SELECT DISTINCT(id) FROM tutorials;

PostgreSQL Sélectionnez l'instruction dans SQL Shell

Étape 5) Vous pouvez utiliser le PostgreSQL Clause LIMIT pour limiter le nombre d'enregistrements renvoyés par la requête SELECT.

SELECT * FROM tutorials LIMIT 4;

PostgreSQL Sélectionnez l'instruction dans SQL Shell

PostgreSQL Sélectionnez l'instruction dans pgAdmin

Étape 1) Dans l'arborescence des objets :

  1. Faites un clic droit sur le tableau.
  2. Sélectionner des scripts.
  3. Cliquez sur SÉLECTIONNER LE SCRIPT.

PostgreSQL Sélectionnez l'instruction dans pgAdmin

Étape 2) Dans le panneau de droite :

  1. Modifiez la requête SELECT si nécessaire.
  2. Cliquez sur l'icône Éclair.
  3. Observez le résultat.

PostgreSQL Sélectionnez l'instruction dans pgAdmin

DISTINCT sur plusieurs colonnes

La clause SELECT DISTINCT peut également s'appliquer à plusieurs colonnes. Lorsque vous indiquez plusieurs colonnes après DISTINCT, PostgreSQL traite la combinaison de ces colonnes comme une unité et supprime les lignes où cette combinaison est dupliquée.

Syntax:
SELECT DISTINCT column_1, column_2 FROM table_name;

Par exemple, pour renvoyer les combinaisons uniques de tutorial_name et id de la table tutorials :

SELECT DISTINCT tutorial_name, id FROM tutorials;

Dans ce cas, une ligne est supprimée uniquement si le nom du tutoriel (tutorial_name) et l'identifiant (id) correspondent tous deux à une autre ligne. Si deux lignes partagent le même nom de tutoriel (tutorial_name) mais des identifiants (id) différents, elles sont conservées, car la combinaison reste unique. Il est important de retenir ce comportement : DISTINCT ne supprime pas les doublons d'une seule colonne lorsqu'il y en a plusieurs ; il supprime les doublons de l'ensemble des colonnes sélectionnées.

DISTINCT vs GROUP BY dans PostgreSQL

DISTINCT et GROUP BY permettent tous deux de supprimer les valeurs en double, mais ils servent des objectifs différents :

  • DISTINCT Elle renvoie simplement les lignes uniques du résultat et est idéale lorsque vous n'avez besoin que d'une liste sans doublons.
  • PAR GROUPE regroupe les lignes qui partagent une valeur afin que vous puissiez appliquer des fonctions d'agrégation telles que COUNT, SUM ou AVG à chaque groupe.

Par exemple, les deux requêtes ci-dessous renvoient toutes deux les valeurs d'identifiant uniques :

SELECT DISTINCT id FROM tutorials;
SELECT id FROM tutorials GROUP BY id;

Utilisez DISTINCT pour une simple liste de valeurs uniques et GROUP BY lorsque vous devez également effectuer un calcul par groupe, par exemple pour compter le nombre de tutoriels partageant chaque identifiant. Pour les requêtes simples, le planificateur offre souvent des performances similaires avec les deux méthodes, mais GROUP BY est indispensable dès qu'une agrégation est nécessaire.

Aide-mémoire

SELECT [column names] FROM [table_name] [clause]

Voici les différents paramètres :

  • Noms des colonnes : Nom des colonnes dont vous souhaitez récupérer la valeur.
  • DE: La clause FROM définit une ou plusieurs tables sources pour la requête SELECT.
  • nom de la table: Le nom d'une table existante que vous souhaitez interroger.

Diverses clauses sont :

Commandes Description
* Récupère les enregistrements pour toutes les lignes du tableau.
DISTINCT DISTINCTE dans PostgreSQL vous aide à supprimer les doublons des résultats.
COMMANDÉ PAR Trie les lignes en fonction d'une colonne. L'ordre de tri par défaut est croissant. Utilisez le mot-clé DESC pour trier par ordre décroissant.
LIMIT LIMITE dans PostgreSQL limite le nombre d'enregistrements renvoyés par la requête.

FAQ

Oui. Les assistants IA peuvent transformer une description en instructions SELECT DISTINCT, ajouter des clauses ORDER BY ou LIMIT et expliquer le résultat. Il est toutefois recommandé de tester la requête sur votre schéma avant de la déployer en production.

Oui. Les outils d'IA peuvent analyser le plan d'exécution de la requête EXPLAIN ANALYZE et suggérer des index ou la réécriture de DISTINCT en GROUP BY. Il est essentiel de toujours valider ces suggestions avec des données réelles, car les performances dépendent de la taille de la table et des index.

DISTINCT supprime les lignes en double sur toutes les colonnes sélectionnées. DISTINCT ON (expression) conserve la première ligne pour chaque valeur distincte de cette expression, vous permettant de sélectionner une ligne par groupe, généralement en combinaison avec ORDER BY.

La commande DISTINCT peut être plus lente sur les grandes tables car elle doit comparer et supprimer les doublons, souvent à l'aide d'un tri ou d'une fonction de hachage. L'utilisation d'index appropriés et la limitation des colonnes sélectionnées contribuent à réduire son coût.

Résumez cet article avec :