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