Mysql distinct по нескольким полям: DISTINCT по нескольким полям???
DISTINCT по нескольким полям???
← →
Sirus
(2004-02-14 06:48)
[0]
Привет Мастера…
Нужен SQL запрос типа
select distinct(CODE), distinct(NAME), distinct(DATE) from TABLE1
order by CODE, DATE
Как можно сделать???
select distinct(CODE||NAME||DATE) from TALBE1
не устравивает…
← →
hursand
(2004-02-14 09:02)
[1]
select code,name,distinct(date) from table1
group by code,name
← →
kaif
(2004-02-14 20:16)
[2]
Просто
select distinct CODE, NAME, DATE from TABLE1
order by CODE, DATE
← →
Johnmen
(2004-02-15 01:58)
[3]
Смотря, что нужно. Неповторяющаяся тройка полей см. kaif © (14.02.04 20:16) [2].
Неповторяющееся каждое поле — надо подумать…:)
← →
kaif
(2004-02-15 13:50)
[4]
2 Johnmen © (15.02.04 01:58) [3]
Я тоже об этом подумал после того, как написал. Я бы предложил наверно три select distinct с union, но нужно понять, что спрашивающий имеет в виду под order by code, date. Скорее всего, ему именно нужны уникальные комбинации всех трех полей. Иначе это упорядочивание теряет смысл.
← →
Sirus
(2004-02-15 18:04)
[5]
Нужны уникальные комбинации трех полей и сортировка по двоим из них…
← →
asp
(2004-02-16 09:38)
[6]
Посто:
SELECT DISTINCT CODE, NAME, DATE
FROM TABLE
ORDER BY CODE, NAME
Или я что-то не понимаю?
Sql distinct по нескольким полям
Выражение MySQL DISTINCT используется для выборки уникальных значений из указанных столбцов. В этой статье мы покажем, как применять DISTINCT в MySQL с помощью Workbench и командной строки.
Синтаксис запросов SELECT DISTINCT в MySQL
Базовый синтаксис запросов SELECT DISTINCT :
- DISTINCT : это ключевое слово возвращает уникальные результаты;
- Columns : позволяет выбрать столбцы, из которых будет осуществляться выборка. Это может быть один или несколько столбцов;
- Source : одна или несколько таблиц, присутствующих в базе данных. Используйте ключевое слово JOIN , чтобы соединить несколько таблиц.
Мы собираемся использовать данные, приведенные ниже, чтобы объяснить применение ключевого слова DISTINCT в MySQL на конкретном примере:
DISTINCT-запрос к одному столбцу
В этом примере мы отобразим уникальные записи из столбца education , используя SELECT DISTINCT MySQL . Но сначала выведем все значения из этого столбца:
Теперь я использую ключевое слово DISTINCT :
DISTINCT-запрос к нескольким столбцам
Когда мы используем запрос MySQL DISTINCT по нескольким полям , SELECT вернёт комбинацию нескольких столбцов вместо уникальных отдельных записей. В этом примере мы выберем уникальные записи из столбцов education и profession :
Несмотря на то, что мы использовали ключевое слово DISTINCT в выражении SELECT , из скриншота, приведенного выше видно, что запрос вернул дублирующие результаты внутри каждого столбца, потому что:
- Bachelors и Developer — это уникальная комбинация;
- Bachelors и Programming — это уникальная комбинация и т.д.
Пример DISTINCT-запроса в MySQL – условие WHERE
В этом MySQL DISTINCT примере мы покажем, как его использовать вместе с условием WHERE . Следующее выражение возвратит уникальные значения столбцов education и profession из таблицы customers , в которых годовой доход больше или равен 85000 :
Несмотря на то, что существует 13 уникальных записей с комбинациями столбцов education и profession , 10 записей не соответствуют условию WHERE . Поэтому на скриншоте показано только 5 записей.
Замечание : Выражение DISTINCT в MySQL воспринимает NULL как допустимое уникальное значение. Поэтому используйте любое NOT NULL условие или функцию, чтобы избавиться от этих значений.
DISTINCT или GROUP BY в MySQL
В MySQL DISTINCT наследует поведение от GROUP BY . Если вы используете выражение GROUP BY без агрегатной функции, то оно будет выполнять роль ключевого слова DISTINCT .
Единственное отличие между ними заключается в следующем:
- GROUP BY сначала сортирует данные, а затем осуществляет группировку;
- Ключевое слово DISTINCT не выполняет сортировки.
Если вы используете ключевое слово DISTINCT вместе с выражением ORDER BY , то получите тот же результат, что и при применении GROUP BY . Следующий запрос возвращает уникальные значения столбца profession из таблицы customerdetails :
Уберём ключевое слово DISTINCT и используем выражение GROUP BY :
Как видите, запрос возвращает тот же результат, но в другом порядке:
В этом MySQL SELECT DISTINCT примере я использую выражение ORDER BY :
Результат тот же, что и при использовании GROUP BY :
Пример DISTINCT-запроса в MySQL – командная строка
Теперь я покажу, как отобразить уникальные записи с помощью SELECT DISTINCT MySQL в командной строки. В этом случае мы выбираем записи с уникальными значениями столбцов education и profession из таблицы customerdetails :
Данная публикация представляет собой перевод статьи « MySQL Distinct » , подготовленной дружной командой проекта Интернет-технологии.ру
Помогите сформировать sql запрос
— это работает, но выбирается только поле news, а мне надо id, news, reg, name, comment,date_add
— этот не работает
2 ответа 2
DISTINCT — это уникальность по всем полям ( практически тоже самое что GROUP BY по всем полям )
То что хотите, можно как-то так:
Всё ещё ищете ответ? Посмотрите другие вопросы с метками select sql или задайте свой вопрос.
Похожие
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.1.17.35809
В моей таблице, у меня есть Collection_Date и Tag_Date поле, оба типа date .
Мне нужно запросить эту таблицу, разделяя даты в его компонент месяц, день и год, но до сих пор сохраняя различия между Collection_Date датами и Tag_Date датами, и я не хочу повторения.
Я попытался это:
Тем не менее, это возвращает только строки с уникальным Collection_Date и Tag_Date .
То , что я думаю , что я хочу, чтобы разделить его на два запрос, один SELECT DISTINCT Инга Collection_Date и один для Tag_Date . Тем не менее, я бы очень хотел , чтобы избежать нескольких запросов, если это возможно.
Как я могу это сделать?
Я уверен, что вам придется разделить его. Ниже будет возвращать сводный набор результатов, но, конечно, по существу, 2 отдельные запросы соединены вместе.
Или теперь с некоторыми добавил дифференциацию. Она возвращает различные даты и поле типа, указывающие, относится ли дата к тегу, коллекции, или оба.
Этот запрос возвращает все уникальные collection_date и tag_date. Если collection_date такого же, как tag_date они оба вернулись. Запрос также возвращает какой тип даты, когда она:
Если вы хотите только один tag_date или collection_date, когда они имеют дату в общем, то вы можете использовать
Mysql distinct по нескольким полям
Выражение MySQL DISTINCT используется для выборки уникальных значений из указанных столбцов. В этой статье мы покажем, как применять DISTINCT в MySQL с помощью Workbench и командной строки.
Синтаксис запросов SELECT DISTINCT в MySQL
Базовый синтаксис запросов SELECT DISTINCT :
- DISTINCT : это ключевое слово возвращает уникальные результаты;
- Columns : позволяет выбрать столбцы, из которых будет осуществляться выборка. Это может быть один или несколько столбцов;
- Source : одна или несколько таблиц, присутствующих в базе данных. Используйте ключевое слово JOIN , чтобы соединить несколько таблиц.
Мы собираемся использовать данные, приведенные ниже, чтобы объяснить применение ключевого слова DISTINCT в MySQL на конкретном примере:
DISTINCT-запрос к одному столбцу
В этом примере мы отобразим уникальные записи из столбца education , используя SELECT DISTINCT MySQL . Но сначала выведем все значения из этого столбца:
Теперь я использую ключевое слово DISTINCT :
DISTINCT-запрос к нескольким столбцам
Когда мы используем запрос MySQL DISTINCT по нескольким полям , SELECT вернёт комбинацию нескольких столбцов вместо уникальных отдельных записей. В этом примере мы выберем уникальные записи из столбцов education и profession :
Несмотря на то, что мы использовали ключевое слово DISTINCT в выражении SELECT , из скриншота, приведенного выше видно, что запрос вернул дублирующие результаты внутри каждого столбца, потому что:
- Bachelors и Developer — это уникальная комбинация;
- Bachelors и Programming — это уникальная комбинация и т.д.
Пример DISTINCT-запроса в MySQL – условие WHERE
В этом MySQL DISTINCT примере мы покажем, как его использовать вместе с условием WHERE . Следующее выражение возвратит уникальные значения столбцов education и profession из таблицы customers , в которых годовой доход больше или равен 85000 :
Несмотря на то, что существует 13 уникальных записей с комбинациями столбцов education и profession , 10 записей не соответствуют условию WHERE . Поэтому на скриншоте показано только 5 записей.
Замечание : Выражение DISTINCT в MySQL воспринимает NULL как допустимое уникальное значение. Поэтому используйте любое NOT NULL условие или функцию, чтобы избавиться от этих значений.
DISTINCT или GROUP BY в MySQL
В MySQL DISTINCT наследует поведение от GROUP BY . Если вы используете выражение GROUP BY без агрегатной функции, то оно будет выполнять роль ключевого слова DISTINCT .
Единственное отличие между ними заключается в следующем:
- GROUP BY сначала сортирует данные, а затем осуществляет группировку;
- Ключевое слово DISTINCT не выполняет сортировки.
Если вы используете ключевое слово DISTINCT вместе с выражением ORDER BY , то получите тот же результат, что и при применении GROUP BY . Следующий запрос возвращает уникальные значения столбца profession из таблицы customerdetails :
Уберём ключевое слово DISTINCT и используем выражение GROUP BY :
Как видите, запрос возвращает тот же результат, но в другом порядке:
В этом MySQL SELECT DISTINCT примере я использую выражение ORDER BY :
Результат тот же, что и при использовании GROUP BY :
Пример DISTINCT-запроса в MySQL – командная строка
Теперь я покажу, как отобразить уникальные записи с помощью SELECT DISTINCT MySQL в командной строки. В этом случае мы выбираем записи с уникальными значениями столбцов education и profession из таблицы customerdetails :
Данная публикация представляет собой перевод статьи « MySQL Distinct » , подготовленной дружной командой проекта Интернет-технологии.ру
Помогите сформировать sql запрос
— это работает, но выбирается только поле news, а мне надо id, news, reg, name, comment,date_add
— этот не работает
2 ответа 2
DISTINCT — это уникальность по всем полям ( практически тоже самое что GROUP BY по всем полям )
То что хотите, можно как-то так:
Всё ещё ищете ответ? Посмотрите другие вопросы с метками select sql или задайте свой вопрос.
Похожие
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.1.14.35781
В моей таблице, у меня есть Collection_Date и Tag_Date поле, оба типа date .
Мне нужно запросить эту таблицу, разделяя даты в его компонент месяц, день и год, но до сих пор сохраняя различия между Collection_Date датами и Tag_Date датами, и я не хочу повторения.
Я попытался это:
Тем не менее, это возвращает только строки с уникальным Collection_Date и Tag_Date .
То , что я думаю , что я хочу, чтобы разделить его на два запрос, один SELECT DISTINCT Инга Collection_Date и один для Tag_Date . Тем не менее, я бы очень хотел , чтобы избежать нескольких запросов, если это возможно.
Как я могу это сделать?
Я уверен, что вам придется разделить его. Ниже будет возвращать сводный набор результатов, но, конечно, по существу, 2 отдельные запросы соединены вместе.
Или теперь с некоторыми добавил дифференциацию. Она возвращает различные даты и поле типа, указывающие, относится ли дата к тегу, коллекции, или оба.
Этот запрос возвращает все уникальные collection_date и tag_date. Если collection_date такого же, как tag_date они оба вернулись. Запрос также возвращает какой тип даты, когда она:
Если вы хотите только один tag_date или collection_date, когда они имеют дату в общем, то вы можете использовать
Sql distinct по нескольким полям
Выражение MySQL DISTINCT используется для выборки уникальных значений из указанных столбцов. В этой статье мы покажем, как применять DISTINCT в MySQL с помощью Workbench и командной строки.
Синтаксис запросов SELECT DISTINCT в MySQL
Базовый синтаксис запросов SELECT DISTINCT :
- DISTINCT : это ключевое слово возвращает уникальные результаты;
- Columns : позволяет выбрать столбцы, из которых будет осуществляться выборка. Это может быть один или несколько столбцов;
- Source : одна или несколько таблиц, присутствующих в базе данных. Используйте ключевое слово JOIN , чтобы соединить несколько таблиц.
Мы собираемся использовать данные, приведенные ниже, чтобы объяснить применение ключевого слова DISTINCT в MySQL на конкретном примере:
DISTINCT-запрос к одному столбцу
В этом примере мы отобразим уникальные записи из столбца education , используя SELECT DISTINCT MySQL . Но сначала выведем все значения из этого столбца:
Теперь я использую ключевое слово DISTINCT :
DISTINCT-запрос к нескольким столбцам
Когда мы используем запрос MySQL DISTINCT по нескольким полям , SELECT вернёт комбинацию нескольких столбцов вместо уникальных отдельных записей. В этом примере мы выберем уникальные записи из столбцов education и profession :
Несмотря на то, что мы использовали ключевое слово DISTINCT в выражении SELECT , из скриншота, приведенного выше видно, что запрос вернул дублирующие результаты внутри каждого столбца, потому что:
- Bachelors и Developer — это уникальная комбинация;
- Bachelors и Programming — это уникальная комбинация и т.д.
Пример DISTINCT-запроса в MySQL – условие WHERE
В этом MySQL DISTINCT примере мы покажем, как его использовать вместе с условием WHERE . Следующее выражение возвратит уникальные значения столбцов education и profession из таблицы customers , в которых годовой доход больше или равен 85000 :
Несмотря на то, что существует 13 уникальных записей с комбинациями столбцов education и profession , 10 записей не соответствуют условию WHERE . Поэтому на скриншоте показано только 5 записей.
Замечание : Выражение DISTINCT в MySQL воспринимает NULL как допустимое уникальное значение. Поэтому используйте любое NOT NULL условие или функцию, чтобы избавиться от этих значений.
DISTINCT или GROUP BY в MySQL
В MySQL DISTINCT наследует поведение от GROUP BY . Если вы используете выражение GROUP BY без агрегатной функции, то оно будет выполнять роль ключевого слова DISTINCT .
Единственное отличие между ними заключается в следующем:
- GROUP BY сначала сортирует данные, а затем осуществляет группировку;
- Ключевое слово DISTINCT не выполняет сортировки.
Если вы используете ключевое слово DISTINCT вместе с выражением ORDER BY , то получите тот же результат, что и при применении GROUP BY . Следующий запрос возвращает уникальные значения столбца profession из таблицы customerdetails :
Уберём ключевое слово DISTINCT и используем выражение GROUP BY :
Как видите, запрос возвращает тот же результат, но в другом порядке:
В этом MySQL SELECT DISTINCT примере я использую выражение ORDER BY :
Результат тот же, что и при использовании GROUP BY :
Пример DISTINCT-запроса в MySQL – командная строка
Теперь я покажу, как отобразить уникальные записи с помощью SELECT DISTINCT MySQL в командной строки. В этом случае мы выбираем записи с уникальными значениями столбцов education и profession из таблицы customerdetails :
Данная публикация представляет собой перевод статьи « MySQL Distinct » , подготовленной дружной командой проекта Интернет-технологии.ру
Помогите сформировать sql запрос
— это работает, но выбирается только поле news, а мне надо id, news, reg, name, comment,date_add
— этот не работает
2 ответа 2
DISTINCT — это уникальность по всем полям ( практически тоже самое что GROUP BY по всем полям )
То что хотите, можно как-то так:
Всё ещё ищете ответ? Посмотрите другие вопросы с метками select sql или задайте свой вопрос.
Похожие
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.1.17.35809
В моей таблице, у меня есть Collection_Date и Tag_Date поле, оба типа date .
Мне нужно запросить эту таблицу, разделяя даты в его компонент месяц, день и год, но до сих пор сохраняя различия между Collection_Date датами и Tag_Date датами, и я не хочу повторения.
Я попытался это:
Тем не менее, это возвращает только строки с уникальным Collection_Date и Tag_Date .
То , что я думаю , что я хочу, чтобы разделить его на два запрос, один SELECT DISTINCT Инга Collection_Date и один для Tag_Date . Тем не менее, я бы очень хотел , чтобы избежать нескольких запросов, если это возможно.
Как я могу это сделать?
Я уверен, что вам придется разделить его. Ниже будет возвращать сводный набор результатов, но, конечно, по существу, 2 отдельные запросы соединены вместе.
Или теперь с некоторыми добавил дифференциацию. Она возвращает различные даты и поле типа, указывающие, относится ли дата к тегу, коллекции, или оба.
Этот запрос возвращает все уникальные collection_date и tag_date. Если collection_date такого же, как tag_date они оба вернулись. Запрос также возвращает какой тип даты, когда она:
Если вы хотите только один tag_date или collection_date, когда они имеют дату в общем, то вы можете использовать
Mysql distinct по одному полю
Выражение MySQL DISTINCT используется для выборки уникальных значений из указанных столбцов. В этой статье мы покажем, как применять DISTINCT в MySQL с помощью Workbench и командной строки.
Синтаксис запросов SELECT DISTINCT в MySQL
Базовый синтаксис запросов SELECT DISTINCT :
- DISTINCT : это ключевое слово возвращает уникальные результаты;
- Columns : позволяет выбрать столбцы, из которых будет осуществляться выборка. Это может быть один или несколько столбцов;
- Source : одна или несколько таблиц, присутствующих в базе данных. Используйте ключевое слово JOIN , чтобы соединить несколько таблиц.
Мы собираемся использовать данные, приведенные ниже, чтобы объяснить применение ключевого слова DISTINCT в MySQL на конкретном примере:
DISTINCT-запрос к одному столбцу
В этом примере мы отобразим уникальные записи из столбца education , используя SELECT DISTINCT MySQL . Но сначала выведем все значения из этого столбца:
Теперь я использую ключевое слово DISTINCT :
DISTINCT-запрос к нескольким столбцам
Когда мы используем запрос MySQL DISTINCT по нескольким полям , SELECT вернёт комбинацию нескольких столбцов вместо уникальных отдельных записей. В этом примере мы выберем уникальные записи из столбцов education и profession :
Несмотря на то, что мы использовали ключевое слово DISTINCT в выражении SELECT , из скриншота, приведенного выше видно, что запрос вернул дублирующие результаты внутри каждого столбца, потому что:
- Bachelors и Developer — это уникальная комбинация;
- Bachelors и Programming — это уникальная комбинация и т.д.
Пример DISTINCT-запроса в MySQL – условие WHERE
В этом MySQL DISTINCT примере мы покажем, как его использовать вместе с условием WHERE . Следующее выражение возвратит уникальные значения столбцов education и profession из таблицы customers , в которых годовой доход больше или равен 85000 :
Несмотря на то, что существует 13 уникальных записей с комбинациями столбцов education и profession , 10 записей не соответствуют условию WHERE . Поэтому на скриншоте показано только 5 записей.
Замечание : Выражение DISTINCT в MySQL воспринимает NULL как допустимое уникальное значение. Поэтому используйте любое NOT NULL условие или функцию, чтобы избавиться от этих значений.
DISTINCT или GROUP BY в MySQL
В MySQL DISTINCT наследует поведение от GROUP BY . Если вы используете выражение GROUP BY без агрегатной функции, то оно будет выполнять роль ключевого слова DISTINCT .
Единственное отличие между ними заключается в следующем:
- GROUP BY сначала сортирует данные, а затем осуществляет группировку;
- Ключевое слово DISTINCT не выполняет сортировки.
Если вы используете ключевое слово DISTINCT вместе с выражением ORDER BY , то получите тот же результат, что и при применении GROUP BY . Следующий запрос возвращает уникальные значения столбца profession из таблицы customerdetails :
Уберём ключевое слово DISTINCT и используем выражение GROUP BY :
Как видите, запрос возвращает тот же результат, но в другом порядке:
В этом MySQL SELECT DISTINCT примере я использую выражение ORDER BY :
Результат тот же, что и при использовании GROUP BY :
Пример DISTINCT-запроса в MySQL – командная строка
Теперь я покажу, как отобразить уникальные записи с помощью SELECT DISTINCT MySQL в командной строки. В этом случае мы выбираем записи с уникальными значениями столбцов education и profession из таблицы customerdetails :
Данная публикация представляет собой перевод статьи « MySQL Distinct » , подготовленной дружной командой проекта Интернет-технологии.ру
Ищу способ выбрать только строки с уникальными адресами электронной почты, но также мне нужны другие данные поля.
В настоящее время есть это:
Который сводит мои результаты с 9208 до 7848, так что работает нормально.
У меня есть 3 или 4 таблицы с примерно 10000 строками в каждой, и мы сейчас собираемся создать одну таблицу «клиентов». Я делаю скрипт для «импорта» всех этих строк в таблицу клиентов.
Строки, которые мне нужны, например, «имя пользователя», «номер», «название» и т. д.
Они не должны быть уникальными, просто электронная почта.
Но это вернуло больше строк, чем раньше, как мне это сделать?
Базы данных
В этом учебном пособии вы узнаете, как использовать MySQL оператор DISTINCT с синтаксисом и примерами.
Описание
MySQL оператор DISTINCT используется для удаления дубликатов из набора результатов. Оператор DISTINCT может использоваться только с операторами SELECT.
Синтаксис
Синтаксис оператор DISTINCT в MySQL:
Параметры или аргументы
expressions — столбцы или вычисления, которые вы хотите получить.
tables — таблицы, из которых вы хотите получить записи. Должна быть хотя бы одна таблица, перечисленная в операторе FROM.
WHERE conditions — необязательный. Условия, которые должны быть выполнены для выбранных записей.
Примечание
- Когда в DISTINCT предусмотрено только одно expressions , запрос возвращает уникальные значения для этого expressions .
- Если в DISTINCT представлено более одного expressions , запрос будет получать уникальные комбинации для указанных expressions .
- В MySQL оператор DISTINCT не игнорирует значения NULL. Поэтому при использовании DISTINCT в вашем SQL-предложении ваш результирующий набор будет включать NULL в качестве отдельного значения.
Пример с одним столбцом
Рассмотрим простейший пример MySQL оператора DISTINCT. Мы можем использовать MySQL DISTINCT, чтобы вернуть один столбец, который удаляет дубликаты из набора результатов.
php — MySql Distinct с несколькими полями
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
Загрузка…
.
sql — Рассчитывать на DISTINCT нескольких полей работают только на MySQL?
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
Загрузка…
sql — ВЫБЕРИТЕ DISTINCT для нескольких полей
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
Загрузка…
.
Использование MySQL DISTINCT для исключения дубликатов
Резюме : в этом руководстве вы узнаете, как использовать предложение MySQL DISTINCT
в операторе SELECT
для удаления повторяющихся строк в наборе результатов.
Введение в MySQL DISTINCT
clause
При запросе данных из таблицы вы можете получить повторяющиеся строки. Чтобы удалить эти повторяющиеся строки, используйте предложение DISTINCT
в операторе SELECT
.
Вот синтаксис предложения DISTINCT
:
SELECT DISTINCT select_list ОТ table_name;
MySQL DISTINCT
примеры
Давайте рассмотрим простой пример использования предложения DISTINCT
для выбора уникальных фамилий сотрудников из таблицы сотрудников
.
Сначала запросите фамилии сотрудников из таблицы сотрудников
, используя следующий оператор SELECT
:
SELECT фамилия ОТ сотрудники СОРТИРОВАТЬ ПО фамилия;
Попробовать
Как ясно видно из выходных данных, у некоторых сотрудников одинаковая фамилия e.г, Бондур,
Фиррелли
.
Этот оператор использует предложение DISTINCT
для выбора уникальных фамилий из таблицы сотрудников
:
SELECT ОТЛИЧИТЕЛЬНАЯ фамилия ОТ сотрудники СОРТИРОВАТЬ ПО фамилия;
Попробовать
Как видно из выходных данных, повторяющиеся фамилии были удалены из набора результатов.
MySQL DISTINCT
и NULL
значения
Если столбец имеет NULL
значений и вы используете предложение DISTINCT
для этого столбца, MySQL сохраняет только одно значение NULL
, поскольку DISTINCT
обрабатывает все значения NULL
как то же значение.
Например, в таблице клиентов
у нас есть много строк, в которых state
столбец имеет NULL
значений.
Когда вы используете предложение DISTINCT
для запроса состояний клиентов, вы увидите уникальные состояния и NULL
в виде следующего запроса:
SELECT DISTINCT state ОТ клиентов;
Попробовать
MySQL DISTINCT
с несколькими столбцами
Вы можете использовать предложение DISTINCT
с несколькими столбцами.В этом случае MySQL использует комбинацию значений в этих столбцах для определения уникальности строки в наборе результатов.
Например, чтобы получить уникальную комбинацию города и штата из таблицы клиентов
, вы используете следующий запрос:
SELECT DISTINCT город-государство ОТ клиенты ГДЕ состояние НЕ ПУСТО СОРТИРОВАТЬ ПО государство, город;
Попробовать
Без предложения DISTINCT
вы получите повторяющуюся комбинацию штата и города следующим образом:
SELECT город-государство ОТ клиенты ГДЕ состояние НЕ ПУСТО СОРТИРОВАТЬ ПО государство , город;
Попробовать
Предложение DISTINCT
vs.Предложение GROUP BY
Если вы используете предложение GROUP BY
в операторе SELECT
без использования агрегатных функций, предложение GROUP BY
ведет себя так же, как предложение DISTINCT
.
Следующий оператор использует предложение GROUP BY
для выбора уникальных состояний клиентов из таблицы customers
.
ВЫБРАТЬ государство ОТ клиенты GROUP BY состояние;
Попробовать
Вы можете добиться аналогичного результата, используя предложение DISTINCT
:
SELECT DISTINCT государство ОТ клиенты;
Попробовать
Вообще говоря, предложение DISTINCT
является частным случаем предложения GROUP BY
.Разница между предложением DISTINCT
и предложением GROUP BY
заключается в том, что предложение GROUP BY
сортирует набор результатов, а предложение DISTINCT
— нет.
Обратите внимание, что MySQL 8.0 удалил неявную сортировку для предложения GROUP BY
. Поэтому, если вы используете MySQL 8.0+, вы обнаружите, что набор результатов вышеуказанного запроса с предложением GROUP BY
не отсортирован.
Если вы добавите предложение ORDER BY
к оператору, использующему предложение DISTINCT
, набор результатов будет отсортирован и будет таким же, как тот, который возвращается оператором, использующим предложение GROUP BY
.
ВЫБРАТЬ ОТЛИЧИТЕЛЬНЫЙ государство ОТ клиенты СОРТИРОВАТЬ ПО государство;
Попробовать
MySQL DISTINCT
и агрегатные функции
Вы можете использовать предложение DISTINCT
с агрегатной функцией, например SUM, AVG и COUNT, чтобы удалить повторяющиеся строки перед применением агрегатных функций к набор результатов.
Например, чтобы подсчитать уникальные состояния клиентов в США, вы используете следующий запрос:
SELECT COUNT (DISTINCT state) ОТ клиенты ГДЕ country = 'США';
Попробовать
MySQL DISTINCT
с предложением LIMIT
Если вы используете предложение DISTINCT
с предложением LIMIT
, MySQL немедленно прекращает поиск, когда находит количество уникальных строк, указанное в пункт LIMIT
.
Следующий запрос выбирает первые пять непустых уникальных состояний в таблице customers
.
ВЫБРАТЬ ОТЛИЧИТЕЛЬНЫЙ государство ОТ клиенты ГДЕ состояние НЕ ПУСТО LIMIT 5;
Попробовать
В этом руководстве мы показали вам различные способы использования предложения MySQL DISTINCT
, например, удаление повторяющихся строк и подсчет значений, отличных от NULL.
- Было ли это руководство полезным?
- Да Нет
.