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 | 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 | 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 | Маунтин-Вью | Калифорния | |
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
следующим образом:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT DISTINCT select_list FROM table_name;
Обратите внимание, что оператор DISTINCT
можно использовать только в операторе SELECT
.
Оператор SELECT
использует значения столбцов, указанные после оператора DISTINCT
, для оценки уникальности строк в наборе результатов.
Если вы укажете один столбец, база данных будет использовать его значения для оценки уникальности. Если вы указываете несколько столбцов, ядро базы данных оценивает уникальность строк на основе комбинации значений в этих столбцах.
Примеры оператора SQL DISTINCT
Давайте рассмотрим некоторые примеры использования оператора DISTINCT
в операторе SELECT
.
1) Использование SQL DISTINCT с примером одного столбца
Следующий запрос получает город сотрудника в таблице сотрудников
:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT city ОТ сотрудников
Набор результатов содержит повторяющийся город, то есть Лондон
появляется четыре раза, что указывает на то, что некоторые сотрудники находятся в том же городе.
Чтобы удалить повторяющиеся города, вы можете использовать оператор DISTINCT
, как показано в следующем запросе:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT DISTINCT город ИЗ сотрудники;
2) Использование SQL DISTINCT с несколькими столбцами, пример
Чтобы найти список уникальных городов и стран из таблицы сотрудников
, вы можете указать город
и страна
столбцов после оператора DISTINCT
, как показано в следующем запросе:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT DISTINCT столица ИЗ сотрудники;
В этом примере DISTINCT
использует комбинацию значений в столбцах города и страны для определения уникальности строк в наборе результатов.
Использование SQL DISTINCT с NULL
Оператор DISTINCT
обрабатывает NULL
дубликат. Это означает, что два NULL
одинаковы. Следовательно, если инструкция SELECT
возвращает NULL
s, DISTINCT
возвращает только один NULL
.
Следующий оператор SELECT
выбирает все регионы из региона
столбца таблицы сотрудников
:
SELECT region FROM employee;
Как видно из выходных данных, запрос возвращает повторяющиеся регионы.Например, NULL появляется четыре раза.
Следующий оператор SELECT использует оператор DISTINCT для выбора уникальных регионов из таблицы сотрудников:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT DISTINCT region ОТ сотрудников;
В результирующем наборе теперь есть уникальные области.
DISTINCT vs. ALL
Стоит упомянуть оператор ALL
. В отличие от оператора DISTINCT
, оператор ALL
включает все строки, содержащие повторяющиеся значения.Следующие запросы возвращают тот же набор результатов.
Язык кода: SQL (язык структурированных запросов) (sql)
ВЫБРАТЬ ВСЕ select_list FROM table_name;
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT select_list FROM table_name;
Оператор SELECT
по умолчанию использует оператор ALL
. Следовательно, вам не нужно явно указывать это в заявлении.
Сводка
- Используйте оператор
DISTINCT
, чтобы выбрать уникальные значения из одного или нескольких столбцов.