Mysql query valori distinti

Mysql query valori distinti
Nella maggior parte dei database, incontrerai spesso valori duplicati, tranne per le chiavi primarie uniche. Ad esempio, un database può contenere una tabella di film con valutazioni simili, anno di rilascio e altri valori simili.

Quindi, per ottenere un elenco di valori univoci, come i vari tipi di valutazioni dei film, dobbiamo ottenere solo i valori unici usando la parola chiave MySQL distinta.

Questo tutorial esaminerà come utilizzare la parola chiave distinta nelle query MySQL per ottenere risultati unici.

Prima di iniziare, supponiamo che tu abbia mysql installato sul tuo sistema e puoi eseguire operazioni sui database.

Se hai bisogno di un database di esempio con cui lavorare, considera il database Sakila nella risorsa fornita di seguito:

https: // dev.mysql.com/doc/indice-altro.html

Uso di base

La sintassi generale per la clausola distinta MySQL è:

Seleziona colonna_list distinto da table_name;

Qui, la colonna_list è l'insieme di colonne che si desidera recuperare separate da virgole. Il nome della tabella è la tabella da cui selezionare i suddetti valori.

Esempio di utilizzo

Illustriamo ora come usare mysql distinto usando un esempio. Stiamo usando il database di esempio Sakila per illustrazione.

Nel database Sakila, troverai la tabella degli attori, che contiene campi come mostrato nel comando seguente:

Desc Sakila.attore;

L'output che descrive i campi della tabella è mostrato di seguito:

mysql> desc sakila.attore;
+-------------+-------------------+------+-----+
| Campo | Tipo | Null | Chiave |
+-------------+-------------------+------+-----+
| Actor_id | Smallint Unsigned | No | Pri |
| first_name | Varchar (45) | No | |
| last_name | Varchar (45) | No | Mul |
| last_update | timestamp | No | |
+-------------+-------------------+------+-----+

NOTA: Ho troncato questa tabella per mostrare solo informazioni pertinenti.

Se selezioniamo i valori nella tabella e nell'ordine degli attori con il nome, le probabilità sono alte che avremo valori duplicati, come mostrato nella query seguente:

Seleziona First_name, last_name da Sakila.Ordine dell'attore tramite First_Name Limit 10;

Dall'output possiamo vedere che ci sono nomi duplicati come mostrato di seguito:

NOTA: Limitiamo l'output ai 10 primi valori poiché la tabella contiene enormi informazioni. Sentiti libero di rimuovere il limite e vedere quanti valori ci sono.

+------------+-------------+
| first_name | last_name |
+------------+-------------+
| Adamo | Hopper |
| Adamo | Grant |
| Al | Ghirlanda |
| Alan | Dreyfuss |
| Albert | Nolte |
| Albert | Johansson |
| Alec | Wayne |
| Angela | Witherspoon |
| Angela | Hudson |
| Angelina | Astaire |
+------------+-------------+
10 righe in set (0.00 sec)

Usando la clausola distinta in MySQL, possiamo filtrare per ottenere nomi univoci dalla stessa tabella mostrata nella query seguente:

Seleziona First_name distinto da Sakila.Ordine dell'attore tramite First_Name Limit 10;

Una volta eseguita la query sopra, otterremo un elenco di nomi univoci.

mysql> Seleziona Distinta First_name da Sakila.Ordine dell'attore tramite First_Name Limit 10;
+------------+
| first_name |
+------------+
| Adamo |
| Al |
| Alan |
| Albert |
| Alec |
| Angela |
| Angelina |
| Anne |
| Audrey |
| Bela |
+------------+
10 righe in set (0.00 sec)

Esempio di utilizzo caso: funzioni aggregate

Puoi anche usare distinto all'interno di una funzione aggregata MySQL come conteggio e somma. Ad esempio, da usare insieme al conteggio della query sopra, possiamo fare:

Seleziona COUNT (Distinta first_name) da Sakila.Attore dove last_name = "Berry";
+----------------------------+
| COUNT (distinto first_name) |
+----------------------------+
| 3 |
+----------------------------+
1 riga in set (0.00 sec)

La query sopra ci dà il numero di nomi dei negomi distinti in cui il ultimo_name è Berry.

NOTA: È bene tenere presente che anche i valori nulli sono considerati duplicati dalla clausola distinta. Quindi, se hai più valori null, verrà restituito solo uno.

Conclusione

Come visto in questo tutorial, puoi usare la clausola distinta MySQL per recuperare i valori univoci da un campo della tabella che contiene valori duplicati.