Distinct sql примеры: Команда 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

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_id supplier_name city state
100 Yandex Moscow Russia
200 Google Lansing Michigan
300 Oracle Redwood City California
400 Bing Redmond Washington
500 Yahoo Sunnyvale Washington
600 DuckDuckGo Paoli Pennsylvania
700 Qwant Paris Ile de France
800 Facebook Menlo Park California
900 Electronic Arts San Francisco California

Давайте найдем все уникальные значения в таблице 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 записей. Вот результаты, которые вы получите:

city state
Moscow Russian
Lansing Michigan
Redwood City California
Redmond Washington
Sunnyvale Washington
Paoli Pennsylvania
Paris France
Menlo Park California

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

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

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

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

product_id product_name category_id
1 Pear 50
2 Banana 50
3 Orange 50
4 Apple 50
5 Bread 75
6 Sliced Ham 25
7 Kleenex NULL

Теперь давайте выберем уникальные значения из поля 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
25
50
75

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

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.

Выбор DISTINCT из (расширения интеллектуального анализа данных) — SQL Server



  • Чтение занимает 3 мин

В этой статье

Применимо к: SQL Server Службы Analysis Services

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

Синтаксис

  
SELECT [FLATTENED] DISTINCT [TOP <n>] <expression list> FROM <model>   
[WHERE <condition list>][ORDER BY <expression>]  

Аргументы

n
Необязательный элемент. Целое число, указывающее количество возвращаемых строк.

список выражений
Список связанных идентификаторов столбцов (производных от модели) или выражений.

model
Идентификатор модели.

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

expression
Необязательный элемент. Выражение, возвращающее скалярное значение.

Комментарии

Инструкция SELECT DISTINCT FROM работает только с одним столбцом или с набором связанных столбцов. С набором несвязанных столбцов это предложение не работает.

Инструкция SELECT DISTINCT FROM позволяет напрямую ссылаться на столбец внутри вложенной таблицы. Пример:

<model>.<table column reference>.<column reference>  

Результаты инструкции **SELECT DISTINCT FROM <model> ** могут различаться в зависимости от типа столбца. В следующей таблице описаны поддерживаемые типы столбцов и выводимые инструкцией данные.

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

Пример дискретного столбца

Следующий пример кода основан на [TM Decision Tree] модели, создаваемой в учебнике по основам интеллектуального анализа данных. Запрос возвращает уникальные значения, существующие в дискретном столбце Gender.

SELECT DISTINCT [Gender]  
FROM [TM Decision Tree]  

Пример результатов:

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

Пример непрерывного столбца

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

SELECT DISTINCT [Age] AS [Midpoint Age],   
    RangeMin([Age]) AS [Minimum Age],   
    RangeMax([Age]) AS [Maximum Age]  
FROM [TM Decision Tree]  

Пример результатов:

Midpoint Age Minimum Age Maximum Age
62 26 97

Кроме того, запрос возвращает одну строку значений NULL, которая представляет отсутствующие значения.

Пример дискретизированного столбца

Следующий образец кода возвращает среднее, максимальное и минимальное значения для каждого сегмента, созданного алгоритмом для столбца [Yearly Income]. Чтобы воспроизвести результаты этого примера, потребуется создать новую структуру интеллектуального анализа данных, аналогичную [Targeted Mailing]. В мастере измените тип содержимого Yearly Income столбца с непрерывного на Дискретный.

Примечание

Можно также изменить модель интеллектуального анализа данных, созданную в учебнике по основам интеллектуального анализа данных, чтобы дискретизировать столбец структуры интеллектуального анализа данных [Yearly Income]. Сведения о том, как это сделать, см. в разделе изменение дискретизации столбца в модели интеллектуального анализа данных. Однако изменение дискретизации столбца повлечет за собой повторную обработку структуры интеллектуального анализа данных; в итоге изменятся результаты других моделей, построенных с использованием этой структуры.

SELECT DISTINCT [Yearly Income] AS [Bucket Average],   
    RangeMin([Yearly Income]) AS [Bucket Minimum],   
    RangeMax([Yearly Income]) AS [Bucket Maximum]  
FROM [TM Decision Tree]  

Пример результатов:

Bucket Average Bucket Minimum Bucket Maximum
24610,7 10000 39221,41
55115,73 39221,41 71010,05
84821,54 71010,05 98633,04
111633,9 98633,04 124634,7
147317,4 124634,7 170000

Видно, что значения столбца [Yearly Income] дискретизированы на пять сегментов. Кроме того, имеется дополнительная строка значений NULL, представляющая недостающие значения.

Количество десятичных разрядов в результатах зависит от клиента, использованного для выполнения запроса. Здесь они были округлены до двух десятичных разрядов, с одной стороны — для простоты, а с другой — чтобы отразить значения, показанные в среде SQL Server Data Tools (SSDT).

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

Возраст >= 69 и годовой доход < 39221,41

Примечание

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

См. также

ВЫБОР ()РАСШИРЕНИЙ ИНТЕЛЛЕКТУАЛЬНОГО АНАЛИЗА ДАННЫХ
Расширения интеллектуального анализа данных (инструкции расширений интеллектуального анализа данных)
Справочник по расширениям интеллектуального анализа данных (расширения интеллектуального анализа данных)



Как применять 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

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

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

Синтаксис

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

SELECT DISTINCT column1, column2,.....columnN 
FROM table_name
WHERE [condition]

Примеры

Рассмотрим таблицу клиентов, имеющих следующие записи:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Maxim    |  35 | Moscow    | 21000.00 |
|  2 | AndreyEx |  38 | Krasnodar | 55500.00 |
|  3 | Oleg     |  33 | Rostov    | 34000.00 |
|  4 | Masha    |  35 | Moscow    | 34000.00 |
|  5 | Ruslan   |  34 | Omsk      | 45000.00 |
|  6 | Dima     |  32 | SP        | 45000.00 |
|  7 | Roma     |  34 | SP        | 10000.00 |
+----+----------+-----+-----------+----------+

 

Во-первых, давайте посмотрим, как следующий запрос SELECT возвращает повторяющиеся записи заработной платы.

SQL> SELECT SALARY FROM CUSTOMERS
   ORDER BY SALARY;

 

Это произведет следующий результат, где зарплата (34000 и 45000) приходит дважды, дублирует записи из исходной таблицы.

+----------+
| SALARY   |
+----------+
| 21000.00 |
| 55000.00 |
| 34000.00 |
| 34000.00 |
| 45000.00 |
| 45000.00 |
| 10000.00 |
+----------+

Теперь, давайте используем ключевое слово DISTINCT с указанным запросом SELECT, а затем увидим результат.

SQL> SELECT DISTINCT SALARY FROM CUSTOMERS
   ORDER BY SALARY;

 

Это произведет следующий результат, где у нас нет каких-либо повторяющихся записей.

+----------+
| SALARY   |
+----------+
| 21000.00 |
| 55000.00 |
| 34000.00 |
| 45000.00 |
| 10000.00 |
+----------+

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Использование DISTINCT и TOP одновременно

Я хочу использовать distinct & top в то же время, что и сделал

SELECT distinct TOP 10 * FROM TableA

но у меня все еще есть дубликат PersonId, так что я должен это сделать :

SELECT distinct (personID) TOP 10 * FROM TableA
но синтаксис неправильный , поэтому мне интересно, есть ли какое-нибудь решение

спасибо,

sql

sql-server

tsql

Поделиться

Источник


user1187282    

18 марта 2013 в 14:27

7 ответов


  • TOP и DISTINCT в одном запросе

    Как я могу использовать top и distinct в одном утверждении, я использую это, но не успех . Я не знаю, что делаю не так . Ниже приведено мое утверждение, которое я использую, но даю мне исключение. SELECT TOP 30 * from ( SELECT DISTINCT…

  • Использование DISTINCT, SUBSTR и ORDER BY одновременно

    Я делаю Oracle запросов в BusinessObjects и не могу использовать эти три ключевых слова одновременно: DISTINCT, SUBSTR и ORDER BY. Можно использовать DISTINCT и ORDER BY или DISTINCT и SUBSTR, но не все эти три вместе. Возвращаемая ошибка-ORA-01791: not a SELECTed expression. Это работает : SELECT…



43

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

SELECT distinct TOP 10 personID 
FROM TableA

Обратите внимание, что без ORDER BY это вернет первые 10 записей в произвольном порядке. Результаты могут отличаться при каждом выполнении запроса.

Поделиться


Matt Busche    

18 марта 2013 в 14:28



5

Похоже, вам нужно 10 случайных записей для разных людей. Попробуйте это:

select t.*
from (select t.*,
             row_number() over (partition by personid order by (select NULL)) as seqnum
      from t
     ) t
where seqnum = 1

В целом, однако, при использовании top вы также должны использовать order by , чтобы указать, что вы подразумеваете под «top».

Поделиться


Gordon Linoff    

18 марта 2013 в 15:51



3

Это работает просто, если вы используете такой запрос:

SELECT DISTINCT TOP 2 name FROM [ATTENDANCE] ; 

В приведенном выше запросе name -это имя столбца, а [ATTENDANCE] -имя таблицы.

Вы также можете использовать WHERE для создания условий фильтрации.

Поделиться


Arulmouzhi    

25 мая 2017 в 11:35


  • c*-понимание ‘select distinct’ использование

    У меня есть таблица Cassandra с 5 столбцами ‘key’ и значением. Мне интересно, есть ли способ — используя только одну таблицу-сканировать комбинации ключевых столбцов. Я в порядке с ‘pinning’ one, чтобы найти значения следующего, но не нашел правильного синтаксиса для C*, чтобы сделать что-то…

  • Teradata использует Top 10 и Distinct

    Я получаю сообщение об ошибке, говорящее, что я не могу использовать топ-10 с distinct, и мне интересно, есть ли какой-нибудь способ заставить мой запрос работать над этой модой. вот о чем говорит Ошибка . [Teradata Database] [6916] синтаксическая ошибка TOP N: опция Top N не поддерживается с…



2

выберите отдельный идентификатор лица из таблицы пример 10

Это работает в teradata

Поделиться


Pinky Joe    

28 февраля 2017 в 13:27



0

SELECT DISTINCT ta.personid FROM (SELECT TOP 10 * FROM TableA) ta

та является объектом вложенный запрос, используя объект та Можно различных значений

Поделиться


Snehal Mankar    

13 июня 2019 в 10:31



-3

я исправил это я сделал

select distinct  personid from (SELECT  TOP 10 * FROM TableA)

Поделиться


user1187282    

18 марта 2013 в 15:23



-3

Если цель состоит в том, чтобы выбрать первую запись 1 из каждого personID, то используйте

select * from TableA group by personid

Поскольку вы выполняете «group by», он вернет каждый столбец, но проигнорирует (не отобразит) любые дополнительные строки с тем же personId

Поделиться


Vette    

02 октября 2017 в 18:23


Похожие вопросы:

Использование Distinct with Top в предложении Select запроса

В SQL Server я могу создать запрос, который использует как Top, так и Distinct в предложении Select, например этот: Select Distinct Top 10 program_name From sampleTable Будет ли база данных…

SQL запрос-объединить DISTINCT и TOP?

У меня есть следующий запрос, который я хочу запустить: SELECT DISTINCT TOP(5) fp.PostId FROM dbForumPosts fp LEFT JOIN dbForumEntry fe ON fp.PostId = fe.PostId Order by fe.Datemade DESC Однако,…

SQL Выберите Distinct Top 2

Если у меня есть таблица с именем [Part] со столбцами [PartID], [IDNumber] и [Length] и данными: [PartID] [IDNumber] [Length] 1 Test1 50 2 Test1 60 3 Test2 50 4 Test3 70 Как я могу выбрать только 2…

TOP и DISTINCT в одном запросе

Как я могу использовать top и distinct в одном утверждении, я использую это, но не успех . Я не знаю, что делаю не так . Ниже приведено мое утверждение, которое я использую, но даю мне исключение….

Использование DISTINCT, SUBSTR и ORDER BY одновременно

Я делаю Oracle запросов в BusinessObjects и не могу использовать эти три ключевых слова одновременно: DISTINCT, SUBSTR и ORDER BY. Можно использовать DISTINCT и ORDER BY или DISTINCT и SUBSTR, но не…

c*-понимание ‘select distinct’ использование

У меня есть таблица Cassandra с 5 столбцами ‘key’ и значением. Мне интересно, есть ли способ — используя только одну таблицу-сканировать комбинации ключевых столбцов. Я в порядке с ‘pinning’ one,…

Teradata использует Top 10 и Distinct

Я получаю сообщение об ошибке, говорящее, что я не могу использовать топ-10 с distinct, и мне интересно, есть ли какой-нибудь способ заставить мой запрос работать над этой модой. вот о чем говорит…

Путаница с порядком обработки пункта «distinct», «top» и «order by»

Я новичок в SQL и SQL Server и испытываю трудности с пониманием порядка PROCESSING различных предложений в запросе. У меня есть вопрос: SELECT DISTINCT TOP(10) name FROM tblEmployees ORDER BY…

Объединение Distinct и TOP 1 в Union | SQL SERVER 2012

У меня есть следующий запрос SQL: SELECT DISTINCT LEFT (employeeidno, 4)deptcode from employeemasterfile ORDER BY deptcode ASC дает значение DISTINCT от D001 до D051 SELECT TOP 1 RIGHT…

выполнение запроса занимает больше времени с помощью предложения distinct и top

У меня есть 2 таблицы, объединенные с оператором union all в таблице procedure.First, содержащей 20 миллионов записей, а вторая таблица содержит 1 миллион записей. если я использую только Top Clause…

7 примеров, объясняющих SQL SELECT DISTINCT (MySQL и SQL Server)

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

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

Демонстрация простого SELECT — DISTINCT

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

Используя предложение DISTINCT, мы получаем только уникальные имена сотрудников:

Запрос:

ВЫБРАТЬ DISTINCT (emp_name) FROM sto_emp_salary_paid;

(применимо к базам данных SQL Server и MySQL)

Использование предложения WHERE с DISTINCT

В этом примере я использовал предложение WHERE с оператором SELECT / DISTINCT, чтобы получить только тех уникальных сотрудников, которым выплаченная зарплата больше или равна 4500.См. Запрос и набор результатов:

Запрос:

ВЫБРАТЬ DISTINCT (emp_name) FROM sto_emp_salary_paid

WHERE emp_sal_paid> = 4500;

Пример функции COUNT с DISTINCT

Вы также можете использовать функцию COUNT SQL для получения количества записей, используя предложение DISTINCT.Функция возвращает только количество строк, возвращенных после предложения DISTINCT.

Для демонстрации я использую таблицу сотрудников, в которой хранится информация о сотрудниках. В демонстрации используются следующие три запроса:

  • Первый запрос возвращает полную запись из таблицы
  • Второй запрос получает количество сотрудников по идентификатору (COUNT и DISTINCT)
  • В то время как третий возвращает уникальные имена сотрудников с использованием столбца emp_name .

Три запроса:

ВЫБРАТЬ * ОТ sto_employees;

SELECT COUNT (DISTINCT id) AS «Всего сотрудников» FROM sto_employees

SELECT COUNT (DISTINCT emp_name) AS «Уникальные имена сотрудников» FROM sto_employees

Предложение DISTINCT с примером GROUP BY

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

Запрос:

ВЫБЕРИТЕ DISTINCT (emp_name), emp_id, SUM (emp_sal_paid) как «Всего выплачено» FROM sto_emp_salary_paid

ГРУППА ПО emp_name, emp_id;

Запись для «Джимми» появляется дважды, так как имеет два разных идентификатора.

Использование предложения HAVING с DISTINCT

Как и при использовании предложения GROUP BY с DISTINCT, вы также можете добавить предложение HAVING для выборки записей.В следующем запросе в приведенном выше примере добавлено предложение HAVING, и мы получим записи, SUM которых больше 5000.

Запрос:

ВЫБЕРИТЕ DISTINCT (emp_name), emp_id, SUM (emp_sal_paid) как «Всего выплачено» FROM sto_emp_salary_paid

GROUP BY emp_name, emp_id

HAVING SUM (emp_sal_paid);

Предложение DISTINCT с ORDER BY, пример

Предложение SQL ORDER BY может использоваться с предложением DISTINCT для сортировки результатов после удаления повторяющихся значений.См. Запрос и вывод ниже:

ВЫБРАТЬ DISTINCT (emp_name) FROM sto_emp_salary_paid

ЗАКАЗАТЬ ПО emp_name;

Результат:

Использование нескольких столбцов в предложении DISTINCT

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

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

Запрос:

ВЫБРАТЬ DISTINCT emp_name FROM sto_emp_salary_paid

ORDER BY emp_name;

ВЫБРАТЬ DISTINCT emp_name, emp_id FROM sto_emp_salary_paid

ORDER BY emp_name;

Результаты для полной таблицы, запросов DISTINCT emp_name и DISTINCT emp_name, emp_id:

SQL: пункт DISTINCT


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

Описание

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

Синтаксис

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

 ВЫБРАТЬ РАЗЛИЧНЫЕ выражения
ИЗ столов
[ГДЕ условия]; 

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

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

Примечание

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

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

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

Получить DDL / DML

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

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

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

provider_id имя_поставщика город состояние
100 Microsoft Редмонд Вашингтон
200 Google Маунтин-Вью Калифорния
300 Оракул Редвуд-Сити Калифорния
400 Кимберли-Кларк Ирвинг Техас
500 Тайсон Фудс Спрингдейл Арканзас
600 СК Джонсон Расин Висконсин
700 Dole Food Company Вестлейк Виллидж Калифорния
800 Цветы Еда Thomasville Грузия
900 Электронное искусство Редвуд-Сити Калифорния

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

Попытайся

 ВЫБРАТЬ ОТЛИЧНОЕ состояние
ОТ поставщиков
ЗАКАЗАТЬ ПО состоянию; 

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

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

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

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

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

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

Попытайся

 ВЫБРАТЬ ОТЛИЧИТЕЛЬНЫЙ город, штат
ОТ поставщиков
ЗАКАЗАТЬ ПО городу, области; 

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

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

В этом примере будет возвращена каждая уникальная комбинация город и состояние .В этом случае 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 Клинекс ПУСТО

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

Попытайся

 ВЫБРАТЬ РАЗЛИЧНЫЙ идентификатор_категории
ИЗ продуктов
ЗАКАЗАТЬ ПО category_id; 

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

category_id
ПУСТО
25
50
75

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

SQL Server: пункт DISTINCT


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

Описание

Предложение DISTINCT SQL Server (Transact-SQL) используется для удаления дубликатов из набора результатов. Предложение DISTINCT можно использовать только с операторами SELECT.

Синтаксис

Синтаксис предложения DISTINCT в SQL Server (Transact-SQL):

 ВЫБРАТЬ РАЗЛИЧНЫЕ выражения
ИЗ столов
[ГДЕ условия]; 

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

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

Примечание

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

Пример — с одним выражением

Давайте посмотрим на простейший пример предложения SQL Server DISTINCT. Мы можем использовать предложение SQL Server DISTINCT для возврата одного поля, которое удаляет дубликаты из набора результатов.

Например:

 ВЫБРАТЬ DISTINCT last_name
ОТ сотрудников
ГДЕ employee_id> = 50; 

Этот пример SQL Server DISTINCT вернет все уникальные значения last_name из таблицы employee , где employee_id больше или равно 50.

Пример — с несколькими выражениями

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

Например:

 ВЫБРАТЬ DISTINCT имя, фамилия
ОТ сотрудников
ГДЕ employee_id> = 50
ЗАКАЗАТЬ ПО last_name; 

Этот пример предложения SQL Server DISTINCT будет возвращать каждую уникальную комбинацию first_name и last_name из таблицы employee , где employee_id больше или равно 50.Результаты отсортированы в порядке возрастания по last_name .

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

SQL SELECT DISTINCT — Dofactory

Объяснение SQL SELECT DISTINCT

SELECT DISTINCT возвращает только уникальных, (т. Е. Различных) значений.

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

DISTINCT можно использовать с агрегатами: COUNT, AVG, MAX и т. Д.

DISTINCT работает с одной колонкой .

DISTINCT для нескольких столбцов не поддерживается.

Задача: Перечислите уникальные города, из которых происходят французские клиенты.

скопировано в буфер обмена

 ВЫБРАТЬ ОТЛИЧНЫЙ город
  ОТ Заказчика
 ГДЕ Страна = 'Франция'
 
  ВЫБРАТЬ ОТЛИЧИТЕЛЬНЫЙ город
  ОТ Заказчика
 ГДЕ Страна = 'Франция'
  

Попробуй вживую

DISTINCT синтаксис.

ВЫБЕРИТЕ РАЗЛИЧНОЕ имя-столбца
  ОТ имя-таблицы
 

DISTINCT синтаксис с COUNT или другими агрегатами.

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

ВЫБРАТЬ ОТЛИЧИТЕЛЬНЫЙ

ПОСТАВЩИК
Идентификатор
Название компании
Контактное имя
Город
Страна
Телефон
Факс

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

скопировано в буфер обмена

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

Попробуй вживую

Результат: 16 рядов

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

ВЫБРАТЬ СЧЕТ РАЗЛИЧНЫХ

ПОСТАВЩИК
Идентификатор
Название компании
Контактное имя
Город
Страна
Телефон
Факс

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

скопировано в буфер обмена

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

Попробуй вживую

Результат:


SQL DISTINCT | Средний уровень SQL

Начиная с этого места? Этот урок является частью полного руководства по использованию SQL для анализа данных.Проверьте начало.

В этом уроке мы рассмотрим:

Использование SQL DISTINCT для просмотра уникальных значений

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

  ВЫБРАТЬ ОТЛИЧИТЕЛЬНЫЙ месяц
  ИЗ tutorial.aapl_historical_stock_price
  

Если вы включите два (или более) столбца в предложение SELECT DISTINCT , ваши результаты будут содержать все уникальные пары этих двух столбцов:

  ВЫБРАТЬ ОТЛИЧИТЕЛЬНЫЙ год, месяц
  ИЗ учебника.aapl_historical_stock_price
  

Примечание. Вам нужно только один раз включить DISTINCT в предложение SELECT — вам не нужно добавлять его для каждого имени столбца.

Практическая задача

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

Попробуй это
Посмотреть ответ

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

Использование DISTINCT в агрегатах

Вы можете использовать DISTINCT при выполнении агрегации. Вы, вероятно, будете использовать его чаще всего с функцией COUNT .

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

  ВЫБРАТЬ СЧЕТЧИК (РАЗЛИЧНЫЙ месяц) КАК unique_months
  ИЗ tutorial.aapl_historical_stock_price
  

Результаты показывают, что существует 12 уникальных значений (другие примеры могут быть менее очевидными). Это достаточно небольшое число, которое вы сможете агрегировать по месяцам и довольно рано интерпретировать результаты. Например, вы можете проследить это, взяв средние объемы сделок по месяцам, чтобы понять, когда акции Apple действительно движутся:

  ВЫБРАТЬ месяц,
       AVG (объем) AS avg_trade_volume
  ИЗ учебника.aapl_historical_stock_price
 ГРУППА ПО МЕСЯЦЕ
 ЗАКАЗАТЬ ПО 2 DESC
  

Хорошо, вернемся к DISTINCT . Вы заметите, что DISTINCT находится внутри агрегатной функции, а не в начале предложения SELECT . Конечно, вы можете SUM или AVG отдельные значения в столбце, но для них меньше практических применений. Для MAX и MIN вам, вероятно, никогда не следует использовать DISTINCT , потому что результаты будут такими же, как и без DISTINCT , а функция DISTINCT значительно замедлит возврат результатов по вашему запросу.

DISTINCT производительность

Стоит отметить, что использование DISTINCT , особенно в агрегатах, может немного замедлить ваши запросы. Мы рассмотрим это более подробно на следующем уроке.

Отточите свои навыки работы с SQL

Практическая задача

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

Попробуй это
Посмотреть ответ

Практическая задача

Напишите запрос, который отдельно подсчитывает количество уникальных значений в столбце месяц и количество уникальных значений в столбце «год».

Попробуй это
Посмотреть ответ

Как использовать отличные в SQL

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

Особое ключевое слово используется вместе с ключевым словом select. Это полезно, когда мы избегаем дублирования значений, присутствующих в определенных столбцах / таблицах . уникальных значений извлекаются, когда мы используем особое ключевое слово.

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

Синтаксис:

ВЫБЕРИТЕ РАЗЛИЧНЫЕ выражения
ИЗ столов
[ГДЕ условия];

Параметры:

Выражения: Столбцы или вычисления, которые мы хотим получить, называются выражениями.

Таблицы: Таблицы, в которых мы хотим получить записи. В предложении FROM есть только одна таблица.

ГДЕ условия: Условия могут выполняться для выбранных записей, и это необязательно.

Примечание:

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

Пример:

Рассмотрим следующую таблицу СОТРУДНИКОВ .

Во-первых, давайте посмотрим, как следующий запрос SELECT возвращает повторяющиеся записи о заработной плате.

SQL> ВЫБРАТЬ ЗАРПЛАТУ ОТ СОТРУДНИКОВ
ЗАКАЗ ПО ЗАРПЛАТЕ;

Когда мы выполняем вышеуказанный SQL-запрос, он выбирает все записи, включая повторяющиеся записи.В приведенной выше таблице зарплата Ньютона и Джонсона равна 20000.

Теперь давайте используем ключевое слово DISTINCT с указанным выше запросом SELECT.

SQL> ВЫБРАТЬ ОТЛИЧНУЮ ЗАРПЛАТУ ИЗ СОТРУДНИКОВ
ЗАКАЗ ПО ЗАРПЛАТЕ;

Приведенный выше запрос SQL удаляет повторяющиеся записи и показывает следующий результат.

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

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

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

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

ВЫБРАТЬ ОТЛИЧНОЕ состояние
ОТ поставщиков
ЗАКАЗАТЬ ПО состоянию;

Это шесть из записей.

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

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

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

Введите оператор SQL :

ВЫБЕРИТЕ ОТЛИЧИТЕЛЬНЫЙ город, штат
ОТ поставщиков
ЗАКАЗАТЬ ПО городу, стране;

Выход:

Это 8 записей:

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

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

Предложение DISTINCT рассматривает NULL как уникальное значение в SQL .У нас есть таблица под названием продуктов , которая содержит следующие данные.

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

ВЫБЕРИТЕ DISTINCT fruit_id
ИЗ фруктов
ЗАКАЗАТЬ ПО category_id;

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

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


Устранение дубликатов с помощью оператора SQL DISTINCT

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

Набор результатов оператора SELECT может содержать повторяющиеся строки. Чтобы удалить дубликаты, используйте оператор DISTINCT следующим образом:

 

SELECT DISTINCT select_list FROM table_name;

Язык кода: SQL (язык структурированных запросов) (sql)

Обратите внимание, что оператор DISTINCT можно использовать только в операторе SELECT .

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

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

Примеры оператора SQL DISTINCT

Давайте рассмотрим некоторые примеры использования оператора DISTINCT в операторе SELECT .

1) Использование SQL DISTINCT с примером одного столбца

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

 

SELECT city ОТ сотрудников

Язык кода: SQL (язык структурированных запросов) (sql)

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

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

 

SELECT DISTINCT город ИЗ сотрудники;

Язык кода: SQL (язык структурированных запросов) (sql)

2) Использование SQL DISTINCT с несколькими столбцами, пример

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

 

SELECT DISTINCT столица ИЗ сотрудники;

Язык кода: SQL (язык структурированных запросов) (sql)

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

Использование SQL DISTINCT с NULL

Оператор DISTINCT обрабатывает NULL дубликат. Это означает, что два NULL одинаковы. Следовательно, если инструкция SELECT возвращает NULL s, DISTINCT возвращает только один NULL .

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

 

SELECT region FROM employee;

Как видно из выходных данных, запрос возвращает повторяющиеся регионы.Например, NULL появляется четыре раза.

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

 

SELECT DISTINCT region ОТ сотрудников;

Язык кода: SQL (язык структурированных запросов) (sql)

В результирующем наборе теперь есть уникальные области.

DISTINCT vs. ALL

Стоит упомянуть оператор ALL . В отличие от оператора DISTINCT , оператор ALL включает все строки, содержащие повторяющиеся значения.Следующие запросы возвращают тот же набор результатов.

 

ВЫБРАТЬ ВСЕ select_list FROM table_name;

Язык кода: SQL (язык структурированных запросов) (sql)
 

SELECT select_list FROM table_name;

Язык кода: SQL (язык структурированных запросов) (sql)

Оператор SELECT по умолчанию использует оператор ALL . Следовательно, вам не нужно явно указывать это в заявлении.

Сводка