Страницы

Поиск по вопросам

воскресенье, 15 декабря 2019 г.

Как в MySQL выбрать строки, значение столбца которых повторяется не более 2х раз

#mysql #sql


Имеется таблица

id|cat_id|name
 1|     1|test1
 2|     1|test2
 3|     2|test3
 4|     3|test4
 5|     3|test5
 6|     1|test6


Нужно сделать выборку так, чтобы в ней было не более чем 2х товаров из каждой категории.
Как это сделать?

Вот ссылка на БД, для проверки
https://dl.dropboxusercontent.com/u/8025044/table.sql
    


Ответы

Ответ 1



Думаю проще всего это будет сделать с использованием переменных: select * from ( select T.*,@n:=if(@cat=cat_id,@n+1,1) as Num,@cat:=cat_id from test7 T,(select @n:=0,@cat:=0) A order by cat_id ) A where Num<=2 Сортировка во внутреннем подзапросе должна обязательно начинаться с cat_id, далее к ней можно добавлять другие поля, что бы регулировать какие именно из двух записей показывать. Вариант "обычным SQL": select * from test7 where id in(select max(id) from test7 group by cat_id union select min(id) from test7 group by cat_id ) Из ограничений метода: из любой группы всегда выбирается запись с минимальным и максимальным ID.

Комментариев нет:

Отправить комментарий