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.