sql >> Database >  >> RDS >> Database

Hoe dubbele rijen in SQL te elimineren

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 slechts één keer voorkomt in deze resultatenset, ook al komt deze twee keer voor in de originele tabel. Dit komt omdat we hebben aangegeven dat we alleen die rijen willen selecteren waarvoor de naam-kleurcombinatie uniek is.

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.


  1. Grondbeginselen van tabeluitdrukkingen, deel 13 - Inline tabelgewaardeerde functies, vervolg

  2. Transparante gegevenscodering (TDE) in SQL Server in een AlwaysOn-beschikbaarheidsgroep op voorbeeld

  3. Database migreren van Postgres naar MySQL

  4. DB-migratie met de NextForm Multi-Table Wizard