我非常确定我们不能使用LIMIT子句来完成我想要的操作 - 所以想找到其他方法来实现。
我有一个表,记录了哪个用户访问了哪个商店。每次用户访问商店时,都会向该表中插入一行记录。
其中一些字段如下:
- shopping_id(主键)
- store_id
- user_id
现在我想做的是 - 对于一组给定的商店,找出访问该商店最多的前5个用户。
我可以逐个商店地执行此操作,例如:
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
这将为我提供访问store_id = 60最多的5个用户
我想要做的是提供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行。
有什么想法可以实现这一点。我总是可以编写一个循环并逐个传递商店,但想知道是否有更好的方法。