我有一个存储用户项的表,我想在这个查询中使用的两个键列是user_id和item_id。示例中的id字段不是必需的,只是为了显示这些不是表中仅有的两个列而添加的。
—————————————————————
ID用户ID项目ID
—————————————————————
11324人
2 1 324个
3 3 324号
4 2 230个
5 4 324个
我想构造的查询应该返回具有特定项ID的最多项的前10个用户。
例如,如果我想对项目id 324运行查询,我应该得到以下结果。
———————————————————---
用户ID项计数
———————————————————---
12个
3 1个
4 1个
20个

最佳答案

试试这个

select user_id , count(*) as item_count from table
where item_id = 324 group by user_id order by item_count desc limit 10

限制10将显示前10个用户并按说明从高到低排序。
但是,上面的查询不会根据您的问题给出0计数。如果您真的需要零计数,可以尝试以下操作:(假设您的表名是userlist)
SELECT distinct user_id,
(select
   count(*) from `userlist`
   where user_id=u.user_id and item_id=324
) as item_count FROM `userlist` u
order by item_count desc

关于php - 按列排序计算另一列具有静态值的位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40747350/

10-13 03:20