Исключение дубликатов, DISTINCT
В некоторых ситуациях SQL запрос на выборку может возвращать повторяющиеся строки данных.
Например, давайте выведем поле class из таблицы Student_in_class из базы данных, в которой организовано хранение информации о расписании занятий в школе.
MySQL 8.4SELECT class FROM Student_in_class;
Поскольку в одном классе возможно нахождение нескольких студентов, то не удивительно, что при выводе мы можем наблюдать одинаковые значения. Чтобы при выборке избежать такого дублирования, есть оператор DISTINCT.
Синтаксис оператора
SELECT [DISTINCT] поля_таблиц FROM имя_таблицы;- [ ]необязательная часть
- DISTINCT
Оставляет в результате только уникальные строки: из нескольких одинаковых выводится одна.
Ключевое словоНеобязательный- поля_таблиц
Столбцы, которые попадут в результат. Уникальность проверяется по всем перечисленным столбцам вместе.
- имя_таблицы
- Таблица, из которой выбираются данные.
То есть в нашем случае запрос на получение уникальных классов, в которых есть хотя бы один студент, будет выглядеть следующим образом:
MySQL 8.4SELECT DISTINCT class FROM Student_in_class;
DISTINCT для нескольких колонок
При использовании оператора DISTINCT для двух и более колонок будут удаляться записи, которые имеют одинаковые значения по всем полям.
То есть для такой таблицы
запрос с оператором DISTINCT вернул бы все сочетания имён и фамилий, кроме дублирующихся «John Scott».
MySQL 8.4SELECT DISTINCT first_name, last_name FROM User;