Бортовой журнал Ктулху

Выборка уникальных значений из таблицы MySQL

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

 

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

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

 

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

 

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

SELECT DISTINCT id_order FROM table 

 

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

1

2

3

4

5

6

7

8

9

10

11

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

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

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

Mysql выборка последних значений групп 

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

SELECT t.*
FROM 'table' t INNER JOIN
(
SELECT 'note', MAX AS id
FROM 'calling'
GROUP BY 1
) q ON (q.note = t.note) AND (q.id = t.id)
WHERE 'date' LIKE '%03.11.2014%'

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

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