Principes de SELECT DISTINCT
Ne renvoyez que les lignes uniques.
Principes de SELECT DISTINCT est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Pourquoi les doublons apparaissent
Les tables contiennent souvent des valeurs répétées. Une table customers peut répertorier la même city dans des milliers de lignes. Lorsque vous vous intéressez uniquement à l'ensemble des valeurs distinctes, un simple SELECT renvoie chaque ligne, y compris les répétitions.
SELECT DISTINCT regroupe les lignes identiques en une seule. Dans cette leçon, vous découvrirez les bases du renvoi de résultats uniques uniquement.
SELECT city FROM customers;
-- Returns one row per customer, with many repeated citiesLe mot-clé DISTINCT
DISTINCT se place immédiatement après SELECT. Il supprime les lignes en double de l'ensemble de résultats et ne conserve qu'un exemplaire de chaque combinaison unique des colonnes sélectionnées.
SELECT DISTINCT city
FROM customers;
-- One row per unique cityDISTINCT s'applique à toute la ligne
Une idée reçue consiste à penser que DISTINCT s'applique à une seule colonne. En réalité, il s'applique à la ligne sélectionnée entière. Chaque colonne que vous indiquez contribue à déterminer si deux lignes sont des doublons.
Ci-dessous, les lignes sont dédoublonnées uniquement selon la valeur de city, car c'est la seule colonne sélectionnée.
SELECT DISTINCT country
FROM customers;
-- Unique countries across all customersExemple de données
Imaginez une petite table orders. Remarquez les valeurs répétées de status et de country. Nous utiliserons cette structure tout au long de la leçon.
id=1, status='paid', country='US'id=2, status='paid', country='US'id=3, status='shipped', country='DE'id=4, status='paid', country='DE'
CREATE TABLE orders (
id int PRIMARY KEY,
status text,
country text,
amount numeric(10,2)
);DISTINCT sur une seule colonne
Sélectionner DISTINCT status dans les exemples de données renvoie les valeurs d'état uniques : paid et shipped. Les quatre lignes sont réduites à deux.
SELECT DISTINCT status
FROM orders;
-- paid
-- shippedNULL est traité comme une seule valeur
Bien que NULL ne soit normalement égal à rien, pas même à lui-même, DISTINCT traite toutes les valeurs NULL comme un seul groupe. Si une colonne contient de nombreuses lignes NULL, le résultat distinct contient exactement une valeur NULL.
SELECT DISTINCT shipped_at
FROM orders;
-- All NULL shipped_at rows collapse into a single NULL rowDISTINCT avec ORDER BY
Vous souhaitez généralement trier les valeurs uniques. DISTINCT s'exécute d'abord pour constituer l'ensemble unique, puis ORDER BY le trie. Toute colonne utilisée dans ORDER BY doit également apparaître dans la liste SELECT lors de l'utilisation de DISTINCT.
SELECT DISTINCT country
FROM orders
ORDER BY country;
-- DE
-- USDISTINCT ou GROUP BY
SELECT DISTINCT col et SELECT col GROUP BY col produisent les mêmes lignes uniques. Utilisez DISTINCT lorsque vous voulez simplement obtenir des valeurs uniques ; utilisez GROUP BY lorsque vous avez également besoin d'agrégats tels que COUNT pour chaque groupe.
-- These two return the same set of countries:
SELECT DISTINCT country FROM orders;
SELECT country FROM orders
GROUP BY country;DISTINCT a un coût
Supprimer les doublons n'est pas gratuit. La base de données doit trier ou hacher toutes les lignes candidates pour trouver les valeurs uniques. Sur les grandes tables, cela augmente le travail du CPU et de la mémoire ; ne demandez donc DISTINCT que lorsque vous avez réellement besoin de l'unicité.
-- Avoid blind DISTINCT on every query.
-- If the column is already unique (e.g. a PRIMARY KEY),
-- DISTINCT does nothing useful but still costs work:
SELECT DISTINCT id FROM orders; -- id is already uniqueDISTINCT dans les expressions
Vous pouvez appliquer DISTINCT à une expression calculée, et pas seulement à une colonne brute. La base de données évalue l'expression pour chaque ligne, puis dédoublonne les résultats.
SELECT DISTINCT upper(country) AS country_code
FROM orders
ORDER BY country_code;
-- DE
-- USCréer une liste de choix
Une utilisation pratique de DISTINCT consiste à remplir une liste déroulante ou une liste de filtres dans une application : récupérez les états uniques pour présenter à l'utilisateur toutes les options possibles actuellement présentes dans les données.
SELECT DISTINCT status
FROM orders
ORDER BY status;
-- paid
-- shippedVérification rapide
Où placer le mot-clé DISTINCT et que dédoublonne-t-il ?
Récapitulatif
Vous avez appris les bases de SELECT DISTINCT :
- Il supprime les lignes en double de l'ensemble de résultats.
- Il s'applique à la ligne sélectionnée entière, et non à une seule colonne.
- Toutes les valeurs
NULLsont regroupées en une seule valeur. ORDER BYs'exécute après la déduplication ; ses colonnes doivent être sélectionnées.- Il demande un travail supplémentaire ; utilisez-le donc uniquement lorsque cela est nécessaire.
Ensuite : étendre DISTINCT à plusieurs colonnes.
SELECT DISTINCT status
FROM orders
ORDER BY status;Questions Fréquemment Posées
La leçon « Principes de SELECT DISTINCT » est-elle gratuite ?
Oui — le texte complet de « Principes de SELECT DISTINCT » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Principes de SELECT DISTINCT » ?
Ne renvoyez que les lignes uniques. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Principes de SELECT DISTINCT » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Principes de SELECT DISTINCT
- DISTINCT sur plusieurs colonnes
- DISTINCT ON de PostgreSQL
- Compter les valeurs uniques