Бортовой журнал Ктулху
Американские программисты очень долго не могли понять, почему их русские коллеги при зависании Windows всё время повторяют фразу "твой кролик написАл" (Your Bunny Wrote).

Выборка уникальных значений из таблицы 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%', то можно получить просто самые последние записи.

Рейтинг@Mail.ru
Яндекс.Метрика
Hosting Ukraine
Счетчик PR-CY.Rank
Счетчик PR-CY.Rank