Содержание
- Синтаксис запросов SELECT DISTINCT в MySQL
- DISTINCT-запрос к одному столбцу
- DISTINCT-запрос к нескольким столбцам
- Пример DISTINCT-запроса в MySQL – условие WHERE
- DISTINCT или GROUP BY в MySQL
- Пример DISTINCT-запроса в MySQL – командная строка
- 2 ответа 2
- Всё ещё ищете ответ? Посмотрите другие вопросы с метками select sql или задайте свой вопрос.
Выражение 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, когда они имеют дату в общем, то вы можете использовать