DISTINCT (SQL)

Материал из Энциклопедия о программировании
Перейти к: навигация, поиск

DISTINCT (дословно переводится как отдельный, особый, отчетливый, определенный, внятный, ясный, индивидуальный, явственный, отличный от, читается как дистинкт) — необязательная составная часть оператора SELECT, определяющая неповторяющийся (уникальный) критерий выборки.

Ключевое слово (вспомогательный (несамостоятельный) оператор, спецификатор оператора) DISTINCT в синтаксисе SQL запросов применяется с оператором SELECT для фильтрации результатов выборки, а именно для исключения повторяющихся значений.

Официально самого по себе определения отдельно для слова DISTINCT в SQL нет так как это не ключевое слово и не оператор. Это лишь часть общего оператора SELECT DISTINCT. Но часто DISTINCT в SQL рассматривают отдельно. В каком-то смысле слова DISTINCT, DISTINCTROW и ALL можно назвать вспомогательными (несамостоятельными) операторами, или спецификаторами оператора SELECT.

Preamble

Оператор SELECT всегда используется со спецификатором, который может быть опущен. Если спецификатор опущен, то по-умолчанию используется спецификатор/параметр ALL, то есть возвращаются все встречающиеся строки. Спецификаторы DISTINCT и DISTINCTROW являются синонимами и указывают, что дублирующиеся строки в результирующем наборе данных должны быть удалены. I.e. когда нужны только различные уникальные значения в результате запроса, то применяется ключевое слово DISTINCT после оператора SELECT.

Синтаксис

SELECT DISTINCT имена_столбцов FROM имя_таблицы
SELECT DISTINCT (имена_столбцов) FROM имя_таблицы

Примеры использования DISTINCT

Выбор названий компаний из таблицы. Пусть мы имеем простую таблицу Table, в которой указаны названия компаний и номера заказов:

CompanyOrderNumber
SomeCompany3412
W3Schools2312
Trio4678
W3Schools6798

Это SQL-выражение:

SELECT Company FROM Table

вернёт такой результат:

Company
SomeCompany
W3Schools
Trio
W3Schools

Обратите внимание, что имя компании W3Schools фигурирует в результате запроса не один раз. Иногда нам этого не нужно и надо избавиться от этого повтора.

А вот это SQL-выражение:

SELECT DISTINCT Company FROM Table

вернёт другой результат:

Company
SomeCompany
W3Schools
Trio

Теперь имя компании W3Schools фигурирует в результате запроса только один раз. Это то, что нужно.

SELECT DISTINCT(model_id) FROM car;

Links

Эта статья относится к языку SQL.