Probleem:
U wilt dubbele rijen uit de resultatenset van een zoekopdracht verwijderen, zodat elke rij slechts één keer voorkomt.
Voorbeeld:
Onze database heeft een tabel met de naam clothes
met gegevens in de volgende kolommen:id
, name
, color
, en year_produced
.
id | naam | kleur | year_produced |
---|---|---|---|
1 | T-shirt | geel | 2015 |
2 | jas | blauw | 2016 |
3 | jeans | zwart | 2015 |
4 | jas | blauw | 2015 |
5 | jas | groen | 2016 |
6 | jas | geel | 2017 |
7 | hoed | geel | 2017 |
Laten we de niet-herhaalde namen en kleuren bekijken van kleding die vóór 2017 is geproduceerd.
Oplossing:
SELECT DISTINCT name, color FROM clothes WHERE year_produced < 2017;
Dit is het resultaat:
naam | kleur |
---|---|
T-shirt | geel |
jas | blauw |
jeans | zwart |
jas | groen |
Merk op dat de blauwe
Discussie:
Gebruik gewoon de DISTINCT
trefwoord na SELECT
als u alleen niet-herhaalde rijen wilt selecteren. Dit zoekwoord dwingt de zoekopdracht om dubbele rijen te verwijderen, alleen op basis van de kolommen die u heeft vermeld.
Hier is een voorbeeld van het selecteren van alleen de rijen waarvoor de naam van het item uniek is:
SELECT DISTINCT name FROM clothes WHERE year_produced < 2017;
In tegenstelling tot de vorige zoekopdracht, retourneert deze slechts drie records:
naam | |
---|---|
T-shirt | |
jeans | |
Hoewel er vier jeans in de originele tabel staan (twee blauwe, een groene en een gele), komt het item slechts één keer voor in deze resultatenset dankzij de DISTINCT
zoekwoord.