DISTINCT în MySQL

Citirea datelor Toate versiunile MySQL și MariaDB

Elimină rândurile duplicate din rezultat.

Sintaxă
SELECT DISTINCT coloana FROM tabel;

Ce face DISTINCT

SELECT DISTINCT păstrează o singură dată fiecare combinație de valori. Cu o singură coloană, obții lista valorilor unice, de exemplu toate orașele în care ai clienți.

Cu mai multe coloane, un rând este duplicat doar dacă toate coloanele sunt identice. COUNT(DISTINCT coloana) numără valorile unice.

Exemple

Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.

CREATE TABLE clienti (
  id INT PRIMARY KEY,
  nume VARCHAR(50) NOT NULL,
  oras VARCHAR(30),
  email VARCHAR(100)
);

INSERT INTO clienti VALUES
  (1, 'Ana Pop', 'Cluj', 'ana@exemplu.ro'),
  (2, 'Bogdan Ionescu', 'Sibiu', NULL),
  (3, 'Cristina Marin', 'Cluj', 'cristina@exemplu.ro'),
  (4, 'Dan Stoica', 'Arad', NULL);

Exemplul 1: Orașele unice

SELECT oras FROM clienti ORDER BY oras;

SELECT DISTINCT oras FROM clienti ORDER BY oras;

Rezultat

+-------+
| oras  |
+-------+
| Arad  |
| Cluj  |
| Cluj  |
| Sibiu |
+-------+

+-------+
| oras  |
+-------+
| Arad  |
| Cluj  |
| Sibiu |
+-------+

Exemplul 2: Câte orașe diferite

SELECT COUNT(DISTINCT oras) FROM clienti;

Rezultat

+----------------------+
| COUNT(DISTINCT oras) |
+----------------------+
|                    3 |
+----------------------+

Greșeli frecvente

  • Pui DISTINCT ca să ascunzi duplicatele apărute dintr-un JOIN greșit. Repară condiția ON.
  • Crezi că DISTINCT se aplică doar primei coloane. Se aplică întregului rând.

Comenzi înrudite

  • COUNT: Numără rândurile sau valorile dintr-o coloană.
  • GROUP BY: Grupează rândurile cu aceeași valoare, ca să calculezi totaluri pentru fiecare grup.
  • SELECT: Citește date dintr-un tabel. Este comanda SQL folosită cel mai des.