Команда DISTINCT позволяет выбирать только уникальные значения из базы данных (то есть отсеивает дубли: к примеру, в таблице есть две Маши - тогда запрос выведет только первую).
Вместо DISTINCT можно использовать DISTINCTROW - в mySQL это одно и то же.
См. также команду COUNT, которая может быть использована для подсчета уникальных значений (в комбинации с DISTINCT).
Синтаксис
При выборке:
SELECT DISTINCT поле FROM имя_таблицы WHERE условие
При подсчете:
SELECT COUNT(DISTINCT поле) FROM имя_таблицы WHERE условие
При суммировании:
SELECT SUM(DISTINCT поле) FROM имя_таблицы WHERE условие
Примеры
Все примеры будут по этой таблице workers, если не сказано иное:
id айди |
name имя |
age возраст |
salary зарплата |
---|---|---|---|
1 | Дима | 23 | 400 |
2 | Петя | 25 | 500 |
3 | Вася | 23 | 500 |
4 | Коля | 30 | 1000 |
5 | Иван | 27 | 500 |
6 | Кирилл | 28 | 1000 |
Пример
Давайте выберем все уникальные значения зарплат из таблицы workers:
SELECT DISTINCT salary FROM workers
SQL запрос выберет следующие строки:
salary зарплата |
---|
400 |
500 |
1000 |
Пример
Давайте подсчитаем все уникальные значения зарплат из таблицы workers (их будет 3 штуки: 400, 500 и 1000):
SELECT COUNT(DISTINCT salary) as count FROM workers
SQL запрос выберет следующие строки:
count количество |
---|
3 |
Пример
Давайте подсчитаем одновременно все уникальные значения зарплат и уникальные значения возрастов и запишем их в разные поля:
SELECT
COUNT(DISTINCT salary) as salary_count,
COUNT(DISTINCT age) as age_count
FROM workers
SQL запрос выберет следующие строки:
salary_count зарплата |
age_count возраст |
---|---|
3 | 5 |
Пример
Давайте просуммируем все уникальные значения зарплат из таблицы workers:
SELECT SUM(DISTINCT salary) as sum FROM workers
SQL запрос выберет следующие строки:
sum суммарная зарплата |
---|
1900 |