Oversigt :i denne øvelse lærer du, hvordan du bruger SQLite SELECT DISTINCT
klausul for at fjerne duplikerede rækker i resultatsættet.
Introduktion til SQLite SELECT DISTINCT
klausul
DISTINCT
klausul er en valgfri klausul af SELECT
udmelding. DISTINCT
klausul giver dig mulighed for at fjerne de duplikerede rækker i resultatsættet.
Følgende sætning illustrerer syntaksen for DISTINCT
klausul:
SELECT DISTINCT select_list
FROM table;
Code language: SQL (Structured Query Language) (sql)
I denne syntaks:
- For det første
DISTINCT
klausul skal vises umiddelbart efterSELECT
søgeord. - For det andet placerer du en kolonne eller en liste over kolonner efter
DISTINCT
søgeord. Hvis du bruger én kolonne, bruger SQLite værdier i den kolonne til at evaluere duplikatet. Hvis du bruger flere kolonner, bruger SQLite kombinationen af værdier i disse kolonner til at evaluere duplikatet.
SQLite betragter NULL
værdier som dubletter. Hvis du bruger NULL
værdier, vil SQLite beholde en række af en NULL
værdi.
I databaseteori, hvis en kolonne indeholder NULL
værdier, betyder det, at vi ikke har oplysningerne om den kolonne med bestemte poster, eller oplysningerne er ikke anvendelige.
For eksempel hvis en kunde har et telefonnummer med en NULL
værdi, betyder det, at vi ikke har oplysninger om kundens telefonnummer på tidspunktet for registrering af kundeoplysninger, eller at kunden måske slet ikke har et telefonnummer.
SQLite SELECT DISTINCT
eksempler
Vi vil bruge kunderne
tabel i eksempeldatabasen til demonstration.
Antag, at du vil kende de byer, hvor kunderne befinder sig, kan du bruge SELECT
sætning for at hente data fra by
kolonne i kunderne
tabel som følger:
SELECT city
FROM customers
ORDER BY city;
Code language: SQL (Structured Query Language) (sql)
Prøv det
Det returnerer 59 rækker. Der er få duplikerede rækker såsom Berlin
London
og Mountain View
For at fjerne disse duplikerede rækker, bruger du DISTINCT
klausul som følger:
SELECT DISTINCT city
FROM customers
ORDER BY city;
Code language: SQL (Structured Query Language) (sql)
Prøv det
Det returnerer 53 rækker, fordi DISTINCT
klausul har fjernet 6 duplikerede rækker.
SQLite SELECT DISTINCT
på flere kolonner
Følgende erklæring finder byer og lande for alle kunder.
SELECT
city,
country
FROM
customers
ORDER BY
country;
Code language: SQL (Structured Query Language) (sql)
Prøv det
Resultatsættet indeholder dobbeltby og land, f.eks. Sao Paulo i Brasilien, som vist på skærmbilledet ovenfor.
For at fjerne dubleret af byen og landet skal du anvende DISTINCT
klausul til både by- og landkolonner som vist i følgende forespørgsel:
SELECT DISTINCT
city,
country
FROM
customers
ORDER BY
country;
Code language: SQL (Structured Query Language) (sql)
Her er det delvise output:
Som tidligere nævnt bruger SQLite kombinationen af by og land til at evaluere duplikatet.
SQLite SELECT DISTINCT
med NULL
eksempel
Denne erklæring returnerer navnene på firmaer af kunder fra kunderne
tabel.
SELECT company
FROM customers;
Code language: SQL (Structured Query Language) (sql)
Prøv det
Det returnerer 59 rækker med mange NULL
værdier.
Nu, hvis du anvender DISTINCT
klausul til sætningen, vil den kun beholde én række med en NULL
værdi.
Se følgende erklæring:
SELECT DISTINCT company
FROM customers;
Code language: SQL (Structured Query Language) (sql)
Prøv det
Udsagnet returnerer 11 rækker med én NULL
værdi.
Bemærk, at hvis du vælger en liste over kolonner fra en tabel og ønsker at få en unik kombination af nogle kolonner, kan du bruge GROUP BY
klausul.
I denne øvelse har du lært, hvordan du fjerner dublerede rækker fra et resultatsæt ved hjælp af SQLite SELECT DISTINCT
klausul.