我有一个存储用户项目的表格,我想在此查询中使用的两个关键列是 user_id 和 item_id 。示例中的id字段不是必需的,只是添加以显示这些不是表中唯一的两列。
---------------------- id user_id item_id ---------------------- 1 1 324 2 1 324 3 3 324 4 2 230 5 4 324
我想构建的查询应该返回具有特定项ID的项目最多的前10位用户。
因此,例如,如果我想针对项目ID 324运行查询,我应该得到以下结果。
------------------- user_id item_count ------------------- 1 2 3 1 4 1 2 0
答案 0 :(得分:1)
试试这个
select user_id , count(*) as item_count from table
where item_id = 324 group by user_id order by item_count desc limit 10
limit 10将显示前10位用户,并按desc排序从高到低排序。
但是,根据您的问题,上述查询不会给您0计数。如果你真的想要零计数你可以试试这个:(假设你的表名是用户列表)
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
答案 1 :(得分:0)
我无法在我的本地创建数据库,但我认为这样做会有所作为
SELECT user_id, COUNT(item_id) as item_count
FROM TABLE_NAME
WHERE item_id = 324
GROUP BY item_id
ORDER BY item_count;