Mysql distinkte verdier spørring

Mysql distinkte verdier spørring
I de fleste databaser vil du ofte møte dupliserte verdier-bortsett fra unike primærnøkler. For eksempel kan en database inneholde en filmtabell med lignende rangeringer, utgivelsesår og andre lignende verdier.

For å få en liste over unike verdier, for eksempel de forskjellige typer filmvurderinger, må vi bare få de unike verdiene ved å bruke MySQL -distinkte nøkkelord.

Denne opplæringen vil gå over hvordan du bruker det distinkte nøkkelordet i MySQL -spørsmål for å få unike resultater.

Før vi begynner, antar vi at du har MySQL installert på systemet ditt og kan utføre operasjoner på databasene.

Hvis du trenger en eksempeldatabase å jobbe med, bør du vurdere Sakila -databasen i ressursen som er gitt nedenfor:

https: // dev.mysql.com/doc/indeks-annet.html

Grunnleggende bruk

Den generelle syntaksen for MySQL -distinkte leddet er:

Velg Distinct Column_List fra Table_Name;

Her er kolonnen_listen settet med kolonner du ønsker å hente atskilt med komma. Tabellnavnet er tabellen for å velge nevnte verdier.

Eksempel Bruk sak

La oss nå illustrere hvordan vi bruker mysql distinkt ved hjelp av et eksempel. Vi bruker Sakila -eksempeldatabasen for illustrasjon.

I Sakila -databasen finner du skuespillerens bord, som inneholder felt som vist i kommandoen nedenfor:

Desc Sakila.skuespiller;

Utgangen som beskriver tabellfeltene er vist nedenfor:

mysql> desc sakila.skuespiller;
+-------------+-------------------+------+-----+
| Felt | Type | Null | Nøkkel |
+-------------+-------------------+------+-----+
| skuespiller_id | Smallint usignert | Nei | Pri |
| First_name | VARCHAR (45) | Nei | |
| Last_name | VARCHAR (45) | Nei | Mul |
| last_update | tidsstempel | Nei | |
+-------------+-------------------+------+-----+

MERK: Jeg har avkortet denne tabellen for bare å vise relevant informasjon.

Hvis vi velger verdiene i aktørens tabell og bestiller med fornavnet, er sjansen stor for at vi vil ha dupliserte verdier, som vist i spørringen nedenfor:

Velg First_name, Last_name fra Sakila.Skuespillerbestilling etter First_name Limit 10;

Vi kan se fra utgangen at det er dupliserte fornavn som vist nedenfor:

MERK: Vi begrenser utdataene til de 10 første verdiene da tabellen inneholder massiv informasjon. Fjern gjerne grensen og se hvor mange verdier det er.

+------------+-------------+
| First_name | Last_name |
+------------+-------------+
| Adam | Hopper |
| Adam | Grant |
| Al | Krans |
| Alan | Dreyfuss |
| Albert | Nolte |
| Albert | Johansson |
| Alec | Wayne |
| Angela | Witherspoon |
| Angela | Hudson |
| Angelina | Astaire |
+------------+-------------+
10 rader i settet (0.00 sek)

Ved å bruke den distinkte leddet i MySQL, kan vi filtrere for å få unike fornavn fra samme tabell som vist i spørringen nedenfor:

Velg distinkt første_navn fra Sakila.Skuespillerbestilling etter First_name Limit 10;

Når vi har utført spørringen ovenfor, vil vi få en liste over unike fornavn.

mysql> velg distinkt første_navn fra Sakila.Skuespillerbestilling etter First_name Limit 10;
+------------+
| First_name |
+------------+
| Adam |
| Al |
| Alan |
| Albert |
| Alec |
| Angela |
| Angelina |
| Anne |
| Audrey |
| Bela |
+------------+
10 rader i settet (0.00 sek)

Eksempel Bruk sak: Aggregatefunksjoner

Du kan også bruke distinkt inne i en MySQL Aggregate -funksjon som telling og sum. For å bruke sammen med telling fra spørringen ovenfor, kan vi for eksempel gjøre:

Velg Count (distinkt First_name) fra Sakila.skuespiller der siste_navn = "Berry";
+----------------------------+
| Count (distinkt første_navn) |
+----------------------------+
| 3 |
+----------------------------+
1 rad i sett (0.00 sek)

Ovennevnte spørring gir oss antall navn på de distinkte fornavnene der sistnavnet er Berry.

MERK: Det er godt å huske på at selv nullverdier anses som duplikater av den distinkte klausulen. Derfor, hvis du har flere nullverdier, vil bare en bli returnert.

Konklusjon

Som det fremgår av denne opplæringen, kan du bruke MySQL Distinct Clause for å hente unike verdier fra et tabellfelt som inneholder dupliserte verdier.