SQL DISTINCT-udtrykket bruges til at fjerne duplikerede værdier fra forespørgselsresultater. Det sikrer, at output kun viser unikke poster for de(n) specificerede kolonne(r).
Eksempel: Først vil vi skabe en demo SQL-database og -tabel, hvor vi vil bruge kommandoen Distinct Clause.
Forespørgsel:
SELECT DISTINCT Department
FROM Employees;
Produktion:
Syntaks:
SELECT DISTINCT column1 column2
FROM table_name
- kolonne 1 kolonne 2: Navne på felterne i tabellen.
- Tabel_navn: Tabel, hvorfra vi ønsker at hente posterne.
Note: Hvis det bruges på flere kolonner
DISTINCTreturnerer unikke kombinationer af værdier på tværs af disse kolonner.
Eksempler på DISTINCT i SQL
Lad os oprette en prøvetabel og udfylde den med nogle duplikerede poster. Vi vil se nogle eksempler på brug af DISTINCT-søgeordet med et eksempel på elevtabel.
Eksempel 1: Hent unikke navne fra feltet NAVN.
Forespørgslen returnerer kun unikke navne, hvilket eliminerer de duplikerede poster fra tabellen.
Forespørgsel:
SELECT DISTINCT NAME FROM students; Produktion:
Eksempel 2: Hentning af unikke kombinationer af flere kolonner
Denne forespørgsel henter forskellige kombinationer af NAVN og ALDER - hvis to rækker har samme navn og alder, vil kun én af dem blive vist i resultatsættet.
Forespørgsel:
SELECT DISTINCT NAME AGE FROM students;Produktion:
Eksempel 3: Brug af DISTINCT med ORDER BY-klausulen
Vi kan kombinere søgeordet DISTINCT med BESTIL EFTER klausul for at filtrere unikke værdier, mens resultatsættet sorteres. Denne forespørgsel henter de unikke aldre fra elevtabellen og sorterer dem i stigende rækkefølge.
Forespørgsel:
SELECT DISTINCT AGE FROM students ORDER BY AGE; Produktion:
Eksempel 4: Brug af DISTINCT med aggregerede funktioner (f.eks. COUNT())
Her vil vi tjekke TÆLLE() funktion med en DISTINCT-sætning, som vil give det samlede antal elever ved at bruge COUNT()-funktionen.
Forespørgsel:
SELECT COUNT(DISTINCT ROLL_NO) FROM Students ;Produktion:
Eksempel 5: DISTINCT med NULL-værdier
I SQL behandler nøgleordet DISTINCT NULL som en unik værdi. NULL behandles som en særskilt værdi, så den vises kun én gang, hvis der er flere NULL'er.
Forespørgsel:
INSERT INTO students (ROLL_NO NAME ADDRESS PHONE AGE)
VALUES (13 'John Doe' '123 Unknown Street' '9876543216' NULL);
SELECT DISTINCT AGE FROM students;
Produktion:
Opret quiz