#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.
Комментариев нет:
Отправить комментарий