Sql вывести уникальные значения

Выборка уникальных значений. Оператор DISTINCT

С помощью оператора DISTINCT можно выбрать уникальные данные по определенным столбцам.

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

Выберем всех производителей:

Однако при таком запросе производители повторяются. Теперь применим оператор DISTINCT для выборки уникальных значений:

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

В данном случае для выборки используются столбцы Manufacturer и ProductCount. Из пяти строк только для двух строк эти столбцы имеют повторяющиеся значения. Поэтому в выборке будет 4 строки:

Встречаются ситуации когда необходимо сделать выборку не повторяющихся (уникальных) значений из како-нибудь таблицы. Например из таблицы посещений пользователей выбрать только уникальные id или из истории заказов интернет-магазина.

Есть, к-примеру, такая таблица.

Нужно получить все уникальные id_order.

Рассмотрим теперь, как выбрать и вывести записи таблиц MySQL с помощью ключевого слова DISTINCT (РАЗЛИЧНЫЙ), использование которого исключает появление повторяющихся данных.

Запрос выглядит так:

В результате будут такие данные:

И самая сложная выборка — выборка последних значений (с максимальным id) среди различных групп записей.

Допустим, есть таблица, в которой хранятся записи с такими полями: id, note_id, date.

id — уникальные. note_id — не уникальные, номер соответствует номеру страницы с записями, имеющими разные даты (поле date).

Задача — выбрать записи note с максимальным id и датой как условием.

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

Если убрать условие WHERE ‘date’ LIKE ‘%03.11.2014%’, то можно получить просто самые последние записи.

Есть таблица org (name, emp_id). Для каждого возможного значения name , необходимо вывести количество уникальных emp_id . Можно ли это сделать с помощью count() или как ещё?

Читайте также:  Usb vid 152d pid 2329 rev 0100

UPD: Немного расшифрую. Допустим

В результате необходимо получить что-то вроде

т.е. если emp_id повторяется в разных name , то их необходимо подсчитывать

4 ответа 4

Первая интерпретация вашего вопроса Для каждого name подсчитать уникальное количество emp_id

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

Унифицировать или нет дело ваше, смотря что там лежит и как

Rate this post

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *