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

SQLite Vælg Distinct

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 efter SELECT 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 DISTINCT klausul med en kolonne, der har 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.


  1. Rådgivning ved brug af pivottabel i Oracle

  2. Hvad er MariaDB ColumnStore?

  3. Hvordan virker COPY, og hvorfor er det så meget hurtigere end INSERT?

  4. Hvordan kan jeg oprette forbindelse til Oracle Database 11g-server gennem ssh-tunnelkæden (dobbelttunnel, server i virksomhedens netværk)?