Problem:
Du vil gerne fjerne eventuelle duplikerede rækker fra resultatsættet af en forespørgsel, så hver række kun vises én gang.
Eksempel:
Vores database har en tabel med navnet clothes
med data i følgende kolonner:id
, name
, color
, og year_produced
.
id | navn | farve | år_produceret |
---|---|---|---|
1 | T-shirt | gul | 2015 |
2 | jakke | blå | 2016 |
3 | jeans | sort | 2015 |
4 | jakke | blå | 2015 |
5 | jakke | grøn | 2016 |
6 | jakke | gul | 2017 |
7 | hat | gul | 2017 |
Lad os få de ikke-gentagne navne og farver på tøj produceret før 2017.
Løsning:
SELECT DISTINCT name, color FROM clothes WHERE year_produced < 2017;
Her er resultatet:
navn | farve |
---|---|
T-shirt | gul |
jakke | blå |
jeans | sort |
jakke | grøn |
Bemærk, at den blå
Diskussion:
Du skal blot bruge DISTINCT
søgeord efter SELECT
hvis du kun vil vælge ikke-gentagede rækker. Dette søgeord tvinger forespørgslen til at kassere alle duplikerede rækker, kun baseret på de kolonner, du har angivet.
Her er et eksempel på kun at vælge de rækker, hvor navnet på elementet er unikt:
SELECT DISTINCT name FROM clothes WHERE year_produced < 2017;
I modsætning til den forrige forespørgsel returnerer denne kun tre poster:
navn | |
---|---|
T-shirt | |
jeans | |
Selvom der er fire jeans i den originale tabel (to blå, en grøn og en gul), vises varen kun én gang i dette resultatsæt takket være DISTINCT
søgeord.