Select distinct sql: SQL SELECT DISTINCT Statement

Содержание

Как применять Distinct в MySQL?

Выражение MySQL DISTINCT используется для выборки уникальных значений из указанных столбцов. В этой статье мы покажем, как применять DISTINCT в MySQL с помощью Workbench и командной строки.

Базовый синтаксис запросов SELECT DISTINCT:

SELECT DISTINCT [Columns]
FROM Source
WHERE Conditions -- это не обязательно
  • DISTINCT: это ключевое слово возвращает уникальные результаты;
  • Columns: позволяет выбрать столбцы, из которых будет осуществляться выборка. Это может быть один или несколько столбцов;
  • Source: одна или несколько таблиц, присутствующих в базе данных. Используйте ключевое слово JOIN, чтобы соединить несколько таблиц.

Мы собираемся использовать данные, приведенные ниже, чтобы объяснить применение ключевого слова DISTINCT в MySQL на конкретном примере:

В этом примере мы отобразим уникальные записи из столбца education, используя SELECT DISTINCT MySQL. Но сначала выведем все значения из этого столбца:

-- MySQL SELECT DISTINCT Example
USE company;
SELECT Education
FROM customerdetails;

Результат:

Теперь я использую ключевое слово DISTINCT:

-- MySQL SELECT DISTINCT Example
USE company;
SELECT DISTINCT Education
FROM customerdetails;

Результат:

Когда мы используем запрос MySQL DISTINCT по нескольким полям, SELECT вернёт комбинацию нескольких столбцов вместо уникальных отдельных записей. В этом примере мы выберем уникальные записи из столбцов education и profession:

-- MySQL SELECT DISTINCT Example
USE company;
SELECT DISTINCT Education, Profession
FROM customerdetails
ORDER BY Education, Profession;

Результат:

Несмотря на то, что мы использовали ключевое слово DISTINCT в выражении SELECT, из скриншота, приведенного выше видно, что запрос вернул дублирующие результаты внутри каждого столбца, потому что:

  • Bachelors и Developer — это уникальная комбинация;
  • Bachelors и Programming — это уникальная комбинация и т.д.

В этом MySQL DISTINCT примере мы покажем, как его использовать вместе с условием WHERE. Следующее выражение возвратит уникальные значения столбцов education и profession из таблицы customers, в которых годовой доход больше или равен 85000:

-- MySQL SELECT DISTINCT Example
USE company;
SELECT DISTINCT Education, Profession
FROM customerdetails
WHERE Yearly_Income > 85000;

Несмотря на то, что существует 13 уникальных записей с комбинациями столбцов education и profession, 10 записей не соответствуют условию WHERE. Поэтому на скриншоте показано только 5 записей.

Замечание: Выражение DISTINCT в MySQL воспринимает NULL как допустимое уникальное значение. Поэтому используйте любое NOT NULL условие или функцию, чтобы избавиться от этих значений.

В MySQL DISTINCT наследует поведение от GROUP BY. Если вы используете выражение GROUP BY без агрегатной функции, то оно будет выполнять роль ключевого слова DISTINCT.

Единственное отличие между ними заключается в следующем:

  • GROUP BY сначала сортирует данные, а затем осуществляет группировку;
  • Ключевое слово DISTINCTне выполняет сортировки.

Если вы используете ключевое слово DISTINCT вместе с выражением ORDER BY, то получите тот же результат, что и при применении GROUP BY. Следующий запрос возвращает уникальные значения столбца profession из таблицы customerdetails:

-- MySQL SELECT DISTINCT Example
USE company;
SELECT DISTINCT Profession
FROM customerdetails;

Результат:

Уберём ключевое слово DISTINCT и используем выражение GROUP BY:

-- MySQL SELECT DISTINCT Example
USE company;
SELECT Profession
FROM customerdetails
GROUP BY Profession;

Как видите, запрос возвращает тот же результат, но в другом порядке:

В этом MySQL SELECT DISTINCT примере я использую выражение ORDER BY:

-- MySQL SELECT DISTINCT Example
USE company;
SELECT DISTINCT Profession
FROM customerdetails
ORDER BY Profession ASC;

Результат тот же, что и при использовании GROUP BY:

Теперь я покажу, как отобразить уникальные записи с помощью SELECT DISTINCT MySQL в командной строки. В этом случае мы выбираем записи с уникальными значениями столбцов education и profession из таблицы customerdetails:

-- MySQL SELECT DISTINCT Example
USE company;
SELECT DISTINCT Education, Profession
FROM customerdetails
ORDER BY Education ASC, Profession ASC;

Результат:

Данная публикация представляет собой перевод статьи «MySQL Distinct» , подготовленной дружной командой проекта Интернет-технологии.ру

SQL оператор DISTINCT — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

В этом учебном материале вы узнаете, как использовать SQL оператор DISTINCT с синтаксисом и примерами.

Описание

SQL оператор DISTINCT используется для удаления дубликатов из результирующего набора оператора SELECT.

Синтаксис

Синтаксис для оператора DISTINCT в SQL:

SELECT DISTINCT expressions
FROM tables
[WHERE conditions];

Параметры или аргументы

expressions
Столбцы или расчеты, которые вы хотите получить.
tables
Таблицы, из которых вы хотите получить записи. В предложении FROM должна быть указана хотя бы одна таблица.
WHERE conditions
Необязательный. Условия, которые должны быть выполнены для записей, которые будут выбраны.

Примечание

  • Если в операторе DISTINCT указано только одно выражение, запрос возвратит уникальные значения для этого выражения.
  • Если в операторе DISTINCT указано несколько выражений, запрос извлекает уникальные комбинации для перечисленных выражений.
  • В SQL оператор DISTINCT не игнорирует значения NULL. Поэтому при использовании DISTINCT в вашем операторе SQL ваш результирующий набор будет содержать значение NULL в качестве отдельного значения.

Пример — поиск уникальных значений в столбце

Давайте посмотрим, как использовать оператор DISTINCT для поиска уникальных значений в одном столбце таблицы.

В этом примере у нас есть таблица suppliers со следующими данными:

supplier_idsupplier_namecitystate
100YandexMoscowRussia
200GoogleLansingMichigan
300OracleRedwood CityCalifornia
400BingRedmondWashington
500YahooSunnyvaleWashington
600DuckDuckGoPaoliPennsylvania
700QwantParisIle de France
800FacebookMenlo ParkCalifornia
900Electronic ArtsSan FranciscoCalifornia

Давайте найдем все уникальные значения в таблице suppliers. Введите следующий SQL оператор:

SELECT DISTINCT state FROM suppliers ORDER BY state;

SELECT DISTINCT state

  FROM suppliers

ORDER BY state;

Будет выбрано 6 записей. Вот результаты, которые вы должны получить:

state
Russia
Ile de France
Pennsylvania
California
Washington
Michigan

В этом примере возвращаются все уникальные значения состояния из таблицы поставщиков и удаляются все дубликаты из набора результатов. Как видите, штат Калифорния в наборе результатов отображается только один раз, а не четыре раза.

Пример — поиск уникальных значений в нескольких столбцах

Далее давайте рассмотрим, как использовать SQL DISTINCT для удаления дубликатов из более чем одного поля в операторе SELECT.

Используя ту же таблицу suppliers из предыдущего примера, введите следующий SQL оператор:

SELECT DISTINCT city, state FROM suppliers ORDER BY city, state;

SELECT DISTINCT city, state

  FROM suppliers

ORDER BY city, state;

Будет выбрано 8 записей. Вот результаты, которые вы получите:

citystate
MoscowRussian
LansingMichigan
Redwood CityCalifornia
RedmondWashington
SunnyvaleWashington
PaoliPennsylvania
ParisFrance
Menlo ParkCalifornia

В этом примере будет возвращаться каждая уникальная комбинация city и state. В этом случае DISTINCT применяется к каждому полю, указанному после ключевого слова DISTINCT. Как видите, ‘Redwood City’, ‘California’ в наборе результатов отображается только один раз, а не дважды.

Пример — как DISTINCT обрабатывает значения NULL

Наконец, считает ли оператор DISTINCT NULL уникальным значением в SQL? Ответ — да. Давайте рассмотрим это дальше.

В этом примере у нас есть таблица products со следующими данными:

product_idproduct_namecategory_id
1Pear50
2Banana50
3Orange50
4Apple50
5Bread75
6Sliced Ham25
7KleenexNULL

Теперь давайте выберем уникальные значения из поля category_id, которое содержит значение NULL. Введите следующий запрос SQL:

SELECT DISTINCT category_id FROM products ORDER BY category_id;

SELECT DISTINCT category_id

  FROM products

ORDER BY category_id;

Будет выбрано 4 записи. Вот результаты, которые вы должны получить:

В этом примере запрос вернет уникальные значения, найденные в столбце category_id. Как видно из первой строки в наборе результатов, NULL — это уникальное значение, которое возвращается оператором DISTINCT.

Команда DISTINCT — уникальные значения

Команда 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

DISTINCT оператор — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

Это SQL руководство объясняет, как использовать SQL оператор DISTINCT с синтаксисом и примерами.

Описание

SQL оператор DISTINCT используется для удаления дубликатов из результирующего набора SELECT.

Синтаксис

SELECT DISTINCT expressions
FROM tables
[WHERE conditions];

Параметры или аргументы

expressions — столбцы или расчеты, которые вы хотите получить.

tables – таблицы из которых вы хотите выгрузить данные. После оператора FROM должна быть указана хотя бы одна таблица.

WHERE conditions. Необязательный. Условия, которые должны быть выполнены для записей, которые будут выбраны.

Примечание

  • Когда в операторе DISTINCT содержится только одно выражение, запрос будет возвращать уникальные значения для этого выражения.
  • Когда в операторе DISTINCT содержится более одного выражения, запрос будет возвращать уникальные комбинации для перечисленных выражений.
  • Оператор DISTINCT не игнорирует NULL значения. Таким образом, при использовании DISTINCT в вашем SQL запросе, ваш результирующий набор будет включать в себя NULL в качестве отдельного значения.

Пример с одним полем

Рассмотрим на примере простой SQL DISTINCT запрос. Здесь используется SQL оператор DISTINCT, который возвращает одно поле, в котором удалены дубликаты из результирующего набора.

SELECT DISTINCT city FROM suppliers;

SELECT DISTINCT city

FROM suppliers;

Этот пример SQL оператора DISTINCT возвращает все уникальные значения city из таблицы suppliers.

Пример — с несколькими полями

Рассмотрим как можно использовать SQL оператор DISTINCT, чтобы удалить дубликаты из более чем одного поля в вашем SQL запросе SELECT.

SELECT DISTINCT city, state FROM suppliers;

SELECT DISTINCT city, state

FROM suppliers;

В этом примере SQL запрос вернет уникальные комбинации полей city и state. В этом случае DISTINCT применяется к каждому полю, указанному после ключевого слова DISTINCT.

SQL distinct: описание, примеры, свойства

Зачастую при использовании SQL для выборки информации из таблиц, пользователь получает избыточные данные, заключающиеся в наличии абсолютно идентичных повторяющихся строк. Для исключения этой ситуации используется аргумент SQL distinct в предложении Select. В данной статье будут рассмотрены примеры использования данного аргумента, а также ситуации, в которых от применения аргумента лучше отказаться.

Прежде чем мы приступим к рассмотрению конкретных примеров, создадим в базе данных пару необходимых таблиц.

sql distinct

Подготовка таблиц

Представим, что у нас в базе данных хранится информация об обоях, представленная в двух таблицах. Это таблица Oboi (обои) с полями id (уникальный идентификатор), type (тип обоев – бумажные, виниловые и др.), color (цвет), struct (структура) и price (цена). И таблица Ostatki (остатки) с полями id_oboi (ссылка на уникальный идентификатор в таблице Oboi) и count (количество рулонов на складе).

Заполним таблицы данными. В таблицу с обоями добавим 9 записей:

Oboi

id

type

color

struct

price

1

Бумажные

Мультиколор

Тисненые

56,9

2

Бумажные двухслойные

Беж

Гладкая

114,8

3

Виниловые

Оранж

Тисненые

504

4

Флизелиновые

Беж

Тисненые

1020,9

5

Бумажные двухслойные

Беж

Гладкая

150,6

6

Бумажные

Мультиколор

Гладкая

95,4

7

Виниловые

Коричневые

Гладкая

372

8

Флизелиновые

Белые

Тисненые

980,1

9

Тканевые

Розовые

Гладкая

1166,5

В таблицу с остатками – также девять записей:

Ostatki

id_oboi

count

1

8

2

12

3

24

4

9

5

16

6

7

7

24

8

32

9

11

Приступим к описанию порядка использования distinct в SQL.

Место distinct в предложении Select

Аргумент distinct следует помещать сразу после ключевого слова Select в запросах. Он применяется сразу ко всем столбцам, указанным в предложении Select, потому что будет исключать из итогового результата запроса абсолютно идентичные строки. Таким образом, достаточно один раз указать при написании запроса SQL «select distinct». Исключение составляет использование distinct внутри агрегатных функций, что рассмотрим чуть позднее.

sql select distinct

Следует помнить, что большинство СУБД и не распознает ваш запрос вида:

SELECT distinct Ostatki.Count, distinct Oboi.*

FROM Oboi

INNER JOIN Ostatki ON Oboi.id = Ostatki.id_oboi

Здесь несколько раз указан рассматриваемый аргумент либо указан один раз, но перед вторым, третьим или иным выбираемым столбцом. Вы получите ошибку со ссылкой на неточности в синтаксисе.

Применение distinct в стандартных запросах

Очевидно, что при грамотном построении структуры таблиц и их заполнении, внутри одной таблицы исключены ситуации, когда встречаются абсолютно идентичные строки. Поэтому выполнение запроса «Select distinct *» с выборкой из одной таблицы практически нецелесообразно.

distinct в sql

Представим ситуацию, когда нам необходимо узнать, какого типа есть у нас обои, сразу для удобства выполним сортировку по типу:

SELECT Oboi.type

FROM Oboi order by type

И получим результат:

type

Бумажные

Бумажные

Бумажные двухслойные

Бумажные двухслойные

Виниловые

Виниловые

Тканевые

Флизелиновые

Флизелиновые

Как видим, в таблице присутствуют дублирующиеся строки. Если же мы добавим в предложение Select distinct:

SELECT distinct Oboi.type

FROM Oboi order by type

то получим результат без повторов:

type

Бумажные

Бумажные двухслойные

Виниловые

Тканевые

Флизелиновые

Таким образом, если грамотно вносились данные в таблицы, то сразу по звонку или запросу покупателей мы сможем ответить, что жидких обоев, стеклообоев и акриловых обоев в наличии в магазине нет. Учитывая, что ассортимент в магазинах обычно не ограничивается одной сотней обоев, просмотреть перечень из неуникальных типов было бы довольно трудозатратно.

Применение distinct внутри агрегатных функций

Аргумент SQL distinct можно использовать с любой агрегатной функцией. Но для Min и Max его применение не даст никакого эффекта, а при вычислении суммы или среднего значения редко можно представить ситуацию, когда не нужно было бы учитывать повторы.

Допустим, мы хотим узнать, насколько заполнен наш склад, и для этого отправляем запрос, вычисляющий общее количество рулонов на складе:

SELECT sum(Ostatki.count)

FROM Ostatki

Запрос выдаст ответ 143. Если же мы изменим на:

SELECT sum(distinct Ostatki.count)

FROM Ostatki

то получим всего 119, ведь обои под артикулами 3 и 7 находятся на складе в одинаковом количестве. Однако очевидно, что этот ответ неверен.

Чаще всего в SQL distinct применяется с функцией Count. Так, без труда мы можем узнать, сколько уникальных видов обоев у нас вообще есть:

SELECT count(distinct Oboi.type)

FROM Oboi

И получить результат 5 – бумажные обычные и двухслойные, виниловые, тканевые и флизелиновые. Наверняка все видели рекламу типа: «Только у нас более 20 видов различных обоев!», под которой подразумевается, что в данном магазине не пара десятков рулонов всего, а обои самых разнообразных современных типов.

Интересно, что в одном запросе можно указывать несколько функций Count как с атрибутом distinct, так и без него. То есть это единственная ситуация, когда distinct в Select’е может присутствовать несколько раз.

Когда следует отказаться от применения аргумента

От применения аргумента SQL distinct следует отказаться в одном из двух случаев:

  1. Вы выполняете выборку из таблиц и уверены в уникальности значений в каждой. В таком случае применение аргумента нецелесообразно, ведь это дополнительная нагрузка на сервер или клиента (в зависимости от вида СУБД).
  2. Вы боитесь потерять нужные данные. Поясним.

Допустим, начальник просит вас вывести список обоев, которые у вас есть, с указанием всего двух столбцов – тип и цвет. По привычке вы указываете аргумент distinct:

SELECT distinct Oboi.type, Oboi.color

FROM Oboi

ORDER BY Oboi.type

И – теряете часть данных:

type

color

Бумажные

Мультиколор

Бумажные двухслойные

Беж

Виниловые

Коричневые

Виниловые

Оранж

Тканевые

Розовые

Флизелиновые

Беж

Флизелиновые

Белые

Может создаться впечатление, что бумажных обоев (обычных и двухслойных) у нас всего по одному виду, хотя на самом деле даже в нашей маленькой таблице их по два артикула (результат без distinct):

type

color

Бумажные

Мультиколор

Бумажные

Мультиколор

Бумажные двухслойные

Беж

Бумажные двухслойные

Беж

Виниловые

Коричневые

Виниловые

Оранж

Тканевые

Розовые

Флизелиновые

Белые

Флизелиновые

Беж

Поэтому, как и при написании любого запроса, с аргументом distinct надо быть аккуратным и грамотно решать вопрос с ее применением в зависимости от поставленной задачи.

Альтернатива distinct

Противоположность аргументу distinct – аргумент All. При его применении повторяющиеся строки сохраняются. Но поскольку по умолчанию СУБД так и считает, что нужно выводить все значения, то аргумент All – это скорее уточнитель, чем реальный функциональный аргумент.

distinct sql описаниеНадеемся, что вам теперь понятно, когда применяется distinct (SQL). Описание дало вам полную информацию о целесообразности применения этого аргумента при решении разных задач. Ведь, как оказалось, даже такой простой аргумент в своем применении скрывает вполне ощутимую вероятность потерять некоторые данные и вывести неточную информацию.

SQL Server SELECT DISTINCT

Сводка : в этом руководстве вы узнаете, как использовать предложение SQL Server SELECT DISTINCT для извлечения только отдельных значений в указанном списке столбцов.

Введение в SQL Server SELECT DISTINCT , предложение

Иногда вам может потребоваться получить только отдельные значения в указанном столбце таблицы. Для этого используется предложение SELECT DISTINCT следующим образом:

 

SELECT DISTINCT column_name ИЗ table_name;

Запрос возвращает только отдельные значения в указанном столбце.Другими словами, он удаляет повторяющиеся значения в столбце из набора результатов.

Если вы используете несколько столбцов, как указано ниже:

 

ВЫБРАТЬ DISTINCT column_name1, column_name2, ... ИЗ table_name;

В запросе используется комбинация значений во всех указанных столбцах в списке SELECT для оценки уникальности.

Если вы примените предложение DISTINCT к столбцу со значением NULL, предложение DISTINCT сохранит только один NULL и исключит другой.Другими словами, предложение DISTINCT рассматривает все значения NULL как одно и то же значение.

SQL Server SELECT DISTINCT примеры

Для демонстрации мы будем использовать таблицу клиентов из примера базы данных.

A) DISTINCT пример с одним столбцом

Следующий оператор возвращает все города всех клиентов в таблицах клиентов :

 

SELECT город ИЗ продажи.клиенты СОРТИРОВАТЬ ПО город;

SQL Server SELECT DISTINCT - duplicate cities SQL Server SELECT DISTINCT - duplicate cities

Как видно из результатов, города дублируются.

Чтобы получить отдельные города, вы добавляете ключевое слово DISTINCT следующим образом:

 

ВЫБЕРИТЕ DISTINCT город ИЗ sales.customers СОРТИРОВАТЬ ПО город;

SQL Server SELECT DISTINCT - distinct cities SQL Server SELECT DISTINCT - distinct cities

Теперь запрос возвращает отдельное значение для каждой группы дубликатов. Другими словами, он удалил все дубликаты городов из набора результатов.

B) DISTINCT Пример с несколькими столбцами

Этот оператор возвращает все города и штаты всех клиентов:

 

SELECT Город, штат ИЗ sales.customers СОРТИРОВАТЬ ПО Город, штат;

SQL Server SELECT DISTINCT - multiple columns example before SQL Server SELECT DISTINCT - multiple columns example before

Приведенное ниже утверждение определяет четкий город и штат всех клиентов.

 

ВЫБЕРИТЕ DISTINCT Город, штат ИЗ sales.customers

SQL Server SELECT DISTINCT - multiple columns example SQL Server SELECT DISTINCT - multiple columns example

В этом примере оператор использовал комбинацию значений в столбцах city и state для оценки дубликата.

C) DISTINCT с примером нулевых значений

В следующем примере обнаруживаются отдельные телефонные номера клиентов:

 

SELECT DISTINCT Телефон ИЗ sales.customers СОРТИРОВАТЬ ПО Телефон;

SQL Server SELECT DISTINCT - null example SQL Server SELECT DISTINCT - null example

В этом примере предложение DISTINCT сохранило только один NULL в столбце телефона и удалило другие NULL.

DISTINCT против GROUP BY

В следующем выражении используется предложение GROUP BY для возврата отдельных городов вместе с состоянием и почтовым индексом из продаж .клиенты таблица:

 

SELECT Город, штат, почтовый индекс ИЗ sales.customers ГРУППА ПО Город (*): Штат (*): Почтовый Индекс СОРТИРОВАТЬ ПО город, штат, почтовый индекс

На следующем рисунке показан частичный вывод:

SQL Server SELECT DISTINCT vs GROUP BY SQL Server SELECT DISTINCT vs GROUP BY

Это эквивалентно следующему запросу, использующему оператор DISTINCT :

 

SELECT DISTINCT Город, штат, почтовый индекс ИЗ sales.customers;

Оба предложения DISTINCT и GROUP BY сокращают количество возвращаемых строк в наборе результатов, удаляя дубликаты.

Однако вы должны использовать предложение GROUP BY , если хотите применить статистическую функцию к одному или нескольким столбцам.

В этом руководстве вы узнали, как использовать предложение SQL Server SELECT DISTINCT для извлечения различных значений из указанного списка столбцов.

SQL SELECT DISTINCT, COUNT, ROWS — с примерами

Как вернуть уникальные значения в SQL?

  • SELECT DISTINCT возвращает только разные (то есть разные) значения.
  • SELECT DISTINCT удаляет дубликаты записей из результатов.
  • DISTINCT можно использовать с агрегатами: COUNT, AVG, MAX и т. Д.
  • DISTINCT работает на одном столбце.DISTINCT для нескольких столбцов не поддерживается.

Синтаксис SQL SELECT DISTINCT

Общий синтаксис

ВЫБЕРИТЕ DISTINCT имя столбца
  ОТ таблицы
 

Может использоваться с COUNT и другими агрегатами

ВЫБЕРИТЕ СЧЕТ (ОТЛИЧНОЕ имя столбца)
  ОТ таблицы
 

ПОСТАВЩИК
Id
CompanyName
ContactName
Город
Страна
Телефон
Факс

SQL SELECT Примеры

Задача : Перечислите все уникальные страны-поставщики в алфавитном порядке.

ВЫБЕРИТЕ РАЗЛИЧНУЮ страну
  ОТ поставщика
ЗАКАЗАТЬ СТРАНУ
 

Результат: 16 строк

Страна
Австралия
Бразилия
Канада
Дания

ПОСТАВЩИК
Id
CompanyName
ContactName
Город
Страна
Телефон
Факс

Задача : Укажите количество уникальных стран-поставщиков.

ВЫБЕРИТЕ СЧЕТ (РАЗЛИЧНАЯ Страна)
  ОТ поставщика
 

Результат:

,

SQL: DISTINCT пункт

totn SQL

В этом руководстве по SQL объясняется, как использовать пункт DISTINCT SQL с синтаксисом и примерами.

Описание

Предложение SQL DISTINCT используется для удаления дубликатов из результирующего набора оператора SELECT.

Синтаксис

Синтаксис для предложения DISTINCT в SQL:

 ВЫБРАТЬ DISTINCT выражений
С таблиц
[ГДЕ условия]; 

Параметры или Аргументы

выражение
столбцы или расчеты, которые вы хотите получить.
столы
Таблицы, из которых вы хотите получить записи. В предложении FROM должна быть указана хотя бы одна таблица.
ГДЕ условия
опционально. Условия, которые должны быть выполнены для записей, которые будут выбраны.

Примечание

  • Если в предложении DISTINCT указано только одно выражение, запрос возвратит уникальные значения для этого выражения.
  • Если в предложении DISTINCT указано несколько выражений, запрос извлекает уникальные комбинации для перечисленных выражений.
  • В SQL предложение DISTINCT не игнорирует значения NULL. Поэтому при использовании предложения DISTINCT в вашем операторе SQL ваш результирующий набор будет содержать значение NULL в качестве отдельного значения.

DDL / DML для примеров

Если вы хотите следовать этому руководству, получите DDL для создания таблиц и DML для заполнения данными. Тогда попробуйте примеры в вашей собственной базе данных!

Получить DDL / DML

Пример

— Поиск уникальных значений в столбце

Давайте рассмотрим, как использовать предложение DISTINCT для поиска уникальных значений в одном столбце таблицы.

В этом примере у нас есть таблица поставщиков со следующими данными:

поставщик_ид имя_поставщика город штат
100 Microsoft Редмонд Вашингтон
200 Google Маунтин-Вью Калифорния
300 Oracle Редвуд Сити Калифорния
400 Кимберли-Кларк Ирвинг Техас
500 Тайсон Фудс Спрингдейл Арканзас
600 SC Johnson Расин Висконсин
700 Dole Food Company Вестлейк Вилладж Калифорния
800 Flowers Foods Томасвилль Грузия
900 Electronic Arts Редвуд Сити Калифорния

Найдем все уникальные состояния в таблице поставщиков .Введите следующий оператор SQL:

Попытайся
 ВЫБЕРИТЕ РАЗНОЕ состояние
ОТ поставщиков
ЗАКАЗАТЬ ПО ГОСУДАРСТВУ; 

Будет выбрано 6 записей. Вот результаты, которые вы должны увидеть:

штат
Арканзас
Калифорния
Грузия
Техас
Вашингтон
Висконсин

В этом примере возвращаются все уникальные значения состояния из таблицы поставщиков и удаляются любые дубликаты из набора результатов.Как вы можете видеть, штат штата Калифорния в штате Калифорния появляется только один раз в наборе результатов, а не четыре раза.

Пример — Поиск уникальных значений в нескольких столбцах

Далее давайте посмотрим, как использовать предложение SQL DISTINCT для удаления дубликатов из более чем одного поля в инструкции SELECT.

Используя ту же таблицу поставщиков из предыдущего примера, введите следующий оператор SQL:

Попытайся
 ВЫБЕРИТЕ DISTINCT город, штат
ОТ поставщиков
ЗАКАЗАТЬ по городу, штату; 

Будет выбрано 8 записей.Вот результаты, которые вы должны увидеть:

город штат
Ирвинг Техас
Маунтин-Вью Калифорния
Расин Висконсин
Редмонд Вашингтон
Редвуд Сити Калифорния
Спрингдейл Арканзас
Томасвилль Грузия
Вестлейк Вилладж Калифорния

В этом примере будет возвращаться каждая уникальная комбинация городов и штатов .В этом случае DISTINCT применяется к каждому полю, указанному после ключевого слова DISTINCT. Как видите, Redwood City, California появляется только один раз в наборе результатов, а не дважды.

Пример — как предложение DISTINCT обрабатывает значения NULL

Наконец, считает ли предложение DISTINCT NULL уникальным значением в SQL? Ответ — да. Давайте рассмотрим это дальше.

В этом примере у нас есть таблица продуктов со следующими данными:

product_id наименование товара category_id
1 Груша 50
2 Банан 50
3 Оранжевый 50
4 яблоко 50
5 Хлеб 75
6 ломтики ветчины 25
7 Kleenex NULL

Теперь давайте выберем уникальные значения из поля category_id , которое содержит значение NULL.Введите следующий оператор SQL:

Попытайся
 ВЫБЕРИТЕ DISTINCT category_id
ИЗ продуктов
ORDER BY category_id; 

Будет выбрано 4 записи. Вот результаты, которые вы должны увидеть:

category_id
NULL
25
50
75

В этом примере запрос вернет уникальные значения, найденные в столбце category_id .Как видно из первой строки в наборе результатов, NULL — это уникальное значение, которое возвращается предложением DISTINCT.

,
mysql — разница между выделенным отличным идентификатором и выделенным отличным * в sql Переполнение стека
  1. Товары
  2. Клиенты
  3. Случаи использования
  1. Переполнение стека Публичные вопросы и ответы
  2. Команды Частные вопросы и ответы для вашей команды
  3. предприятие Частные вопросы и ответы для вашего предприятия
  4. работы Программирование и связанные с ним технические возможности карьерного роста
  5. Талант Нанимать технический талант
  6. реклама Связаться с разработчиками по всему миру
,
Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован.