按受欢迎程度排序 MYSQL

Order by popularity MYSQL

我想做一个查询,如标题所说,按受欢迎程度排序。 我所说的受欢迎程度是指评论最多的那个,例如:

文章TABLE

ID | TITLE 

评论TABLE

ID | COMMENT | ARTICLE_ID

查询应该ORDER BY DESC ARTICLE title 取决于评论数(ARTICLE_ID)。

例如:

'THIS IS A DUMMY TITLE' <= NUMBER OF COMENTS = 11
'THIS IS THE DUMMY TITLE' <= NUMBER OF COMENTS = 7 
'THIS IS OTHER DUMMY TITLE' <= NUMBER OF COMENTS = 3 
select max(a.ID) as ARTICLE_ID, max(a.TITLE) as TITLE, sum(1) as COMMENTS
from COMMENTS c
join ARTICLE a on (a.ID = c.ARTICLE_ID)
group by c.ARTICLE_ID
order by 3 desc
SELECT `commets`.*,`article`.title  
FROM (SELECT COUNT(ARTICLE_ID) AS C, `ARTICLE_ID` FROM `commets` GROUP BY `ARTICLE_ID`) AS TAB JOIN `commets` 
ON TAB.`ARTICLE_ID` = `commets`.`ARTICLE_ID`  JOIN `article` 
ON `article`.`ID` = `commets`.`ARTICLE_ID` 
ORDER BY TAB.C DESC

说明

好的,所以在这里我假设需要整个评论行,所以为了不对获得的每一列使用聚合函数,以防我们想在主 select 中包含 GROUP BY,我通过内联 select 创建了一个 table 以获得评论最高的文章:

(SELECT COUNT(ARTICLE_ID) AS C, `ARTICLE_ID` FROM `commets` GROUP BY `ARTICLE_ID`)    

并将此table别名为TAB,然后将此table中的文章id与评论tables加入,得到comments columns and the article table 获取文章的标题,然后通过内联 select.[=12 中的 count 列 C 对整个查询进行排序=]