sql >> Database teknologi >  >> RDS >> Database

Sådan fjerner du dublerede rækker i SQL

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å kun vises én gang i dette resultatsæt, selvom den optræder to gange i den originale tabel. Dette skyldes, at vi har specificeret, at vi kun ønsker at vælge de rækker, for hvilke navn-farve-kombinationen er unik.

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.


  1. TO_DATE() Funktion i Oracle

  2. Sådan får du optegnelser fra de sidste 30 dage

  3. Tips til migrering fra proprietære til Open Source-databaser

  4. Sådan får du datoen fra en Datetime-kolonne i MySQL