Problem:
Du vill ta bort alla dubbletter av rader från resultatuppsättningen för en fråga så att varje rad endast visas en gång.
Exempel:
Vår databas har en tabell som heter clothes
med data i följande kolumner:id
, name
, color
, och year_produced
.
id | namn | färg | år_producerat |
---|---|---|---|
1 | T-shirt | gul | 2015 |
2 | jacka | blå | 2016 |
3 | jeans | svart | 2015 |
4 | jacka | blå | 2015 |
5 | jacka | grön | 2016 |
6 | jacka | gul | 2017 |
7 | hatt | gul | 2017 |
Låt oss få de icke-upprepade namnen och färgerna på kläder som producerats före 2017.
Lösning:
SELECT DISTINCT name, color FROM clothes WHERE year_produced < 2017;
Här är resultatet:
namn | färg |
---|---|
T-shirt | gul |
jacka | blå |
jeans | svart |
jacka | grön |
Lägg märke till att den blå
Diskussion:
Använd bara DISTINCT
nyckelord efter SELECT
om du bara vill välja rader som inte upprepas. Detta sökord tvingar frågan att kassera alla dubbletter av rader, endast baserat på kolumnerna du listade.
Här är ett exempel på att bara välja rader för vilka objektets namn är unikt:
SELECT DISTINCT name FROM clothes WHERE year_produced < 2017;
Till skillnad från den tidigare frågan returnerar denna endast tre poster:
namn | |
---|---|
T-shirt | |
jeans | |
Även om det finns fyra jeans i den ursprungliga tabellen (två blå, en grön och en gul), visas föremålet bara en gång i denna resultatuppsättning tack vare DISTINCT
nyckelord.