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

Php 按列计数排序,其中另一列具有静态值,php,mysql,sql,database,count,Php,Mysql,Sql,Database,Count,我有一个存储用户项的表,我想在这个查询中使用的两个关键列是user\u id和item\u id。示例中的id字段不是必需的,只是为了显示表中并非只有这两列 ---------------------- id user_id item_id ---------------------- 1 1 324 2 1 324 3 3 324 4 2 230 5 4 324 ---------

我有一个存储用户项的表,我想在这个查询中使用的两个关键列是user\u iditem\u id。示例中的id字段不是必需的,只是为了显示表中并非只有这两列

---------------------- id user_id item_id ---------------------- 1 1 324 2 1 324 3 3 324 4 2 230 5 4 324 ---------------------- id用户\u id项目\u id ---------------------- 1 1 324 2 1 324 3 3 324 4 2 230 5 4 324 我想要构造的查询应该返回具有特定项id的项最多的前10个用户

因此,例如,如果我想对项目ID324运行查询,我应该得到以下结果

------------------- user_id item_count ------------------- 1 2 3 1 4 1 2 0 ------------------- 用户id项目计数 ------------------- 1 2 3 1 4 1 2 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;
试试这个

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名用户,并按描述从高到低排序

但是,上述查询不会根据您的问题给出0计数。如果您真的想要零计数,可以尝试以下方法:(假设您的表名是userlist)


您应该使用group by(但是为什么用户\u 2项\u计数=0…?也应该是1)和
count()
函数您真的想要第四行计数为零吗?我想第四行不需要诚实
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