php - 如何根据mysql中的计数获得排名

标签 php mysql sql join count

我在根据计数获取排名时遇到问题。

我有两张 table :

1)images
2)images_like

现在,如果 images_like 没有条目,那么它在排名中显示“NULL”。请检查查询和输出:

SELECT im.id, 
   rank 
FROM   (SELECT image_id, 
               @rownum := @rownum + 1 AS rank, 
               Count(*)               AS cnt 
        FROM   images_like, 
               (SELECT @rownum := 0) r 
        GROUP  BY image_id 
        ORDER  BY `cnt` DESC) AS d 
       RIGHT JOIN images AS im 
               ON d.image_id = im.id 

enter image description here

我需要显示 3 not null ....

提前致谢!!!!

最佳答案

尝试这样:

SELECT im.id, d.rank  
FROM
(               
    SELECT t.image_id, @rownum := @rownum + 1 AS rank 
    FROM
        (               
          SELECT image_id, 
                 Count(*) AS cnt 
          FROM   images_like
          GROUP  BY image_id 
          ORDER  BY `cnt` DESC) AS d       
        ) t, 
     (SELECT @rownum := 0) r          
) d     
RIGHT JOIN images AS im ON d.image_id = im.id   

关于php - 如何根据mysql中的计数获得排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40483269/

相关文章:

php - 如何使用连接表将记录添加到数据库 - codeigniter

mysql - SQL 查询从数据表中选择不同的值以及相应的列值

java - Web 应用程序 DAL 中的 JDBC 数据库连接

php - 推进 - 从哪里开始

php - Laravel - 将大量条目保存到数据库中

php - 字符编码错误

PhpMyAdmin 访问被拒绝 #2002 Ubuntu、Lampp(Xampp For ubuntu)

php - 在PHP中一遍又一遍打开MySQL连接有什么影响

mysql - 为什么MySQL中有多个存储马达

mysql - 为什么 EXPLAIN 的输出在每个 SHOW 索引后都会改变?