按列计数,其中另一列具有静态值

时间:2016-11-22 16:48:59

标签: php mysql sql database count

我有一个存储用户项目的表格,我想在此查询中使用的两个关键列是 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

2 个答案:

答案 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;