В этом руководстве мы изучим ключевое слово SQL DISTINCT. Добавляя это ключевое слово в предложение SELECT, вы сообщаете команде SELECT только отличные значения из таблицы (таблиц).

Давайте посмотрим на пример.

ВЫБЕРИТЕ учащегося, уровень ИЗ MATH_CLASS;

Если вы хотите получить список учеников, зачисленных в математический класс независимо от уровня, вы, скорее всего, не захотите выбирать ученика дважды, если он/она учится более чем в одном классе. Другими словами, вы хотите, чтобы Кевин и Энни появлялись в вашем наборе результатов только один раз.

Есть несколько способов сделать это. Например, вы можете использовать SQL Exists:

ВЫБЕРИТЕ учащегося ИЗ MATH_CLASS a WHERE NOT EXISTS (ВЫБЕРИТЕ учащегося FROM MATH_CLASS b WHERE b.Student = a.Student AND b.Level ‹› a.Level) UNION SELECT Student FROM MATH_CLASS a WHERE Level = «1» AND EXISTS (SELECT Student FROM MATH_CLASS b WHERE b.Student = a.Student AND b.Level = «2»);

Первый оператор SELECT выбирает учащихся только в ОДНОМ математическом классе, а второй оператор SELECT выбирает учащихся ОБА уровней 1 и 2. Оператор SQL UNION объединяет два набора результатов.

Более простой способ выбрать один и тот же набор результатов — использовать ключевое слово SQL Distinct.

ВЫБЕРИТЕ ОТЛИЧНЫЙ УЧЕНИК ИЗ MATH_CLASS;

Это говорит механизму SQL выбрать всех разных учеников из таблицы MATH_CLASS.

Если вы добавите столбец «Уровень» в инструкцию SELECT, вы получите другой набор результатов.
SELECT DISTINCT Student, Level FROM MATH_CLASS;

Ключевое слово DISTINCT применяется к ДВУМ столбцам — оно выбирает разные значения «Студент + Уровень».

Первоначально опубликовано на www.ilearnsql.com.