Я совершенно уверен, что мы не можем использовать предложение LIMIT для того, что я хочу сделать, поэтому хотел выяснить, есть ли другие способы, которыми мы можем это сделать.
У меня есть таблица, которая фиксирует, какой пользователь посетил какой магазин. Каждый раз, когда пользователь посещает магазин, в эту таблицу вставляется строка.
Некоторые поля
- shopping_id (первичный ключ)
- store_id
- user_id
Теперь то, что я хочу, - для данного набора магазинов найдите 5 лучших пользователей, которые посетили магазин максимальное количество раз.
Я могу сделать это 1 магазин за раз, как:
select store_id,user_id,count(1) as visits
from shopping
where store_id = 60
group by user_id,store_id
order by visits desc Limit 5
Это даст мне 5 пользователей, которые посетили store_id = 60 макс. Раз
Что я хочу сделать, это предоставить список из 10 store_ids и для каждого магазина выбрать 5 пользователей, которые посетили этот магазин максимальное количество раз.
select store_id,user_id,count(1) as visits
from shopping
where store_id in (60,61,62,63,64,65,66)
group by user_id,store_id
order by visits desc Limit 5
Это не будет работать, так как Limit в конце вернет только 5 строк вместо 5 строк для каждого магазина.
Любые идеи о том, как мне этого добиться. Я всегда могу написать цикл и передать 1 магазин за раз, но хотел знать, есть ли лучший способ