我想提出一个查询,正如标题所说,按人气排序。 我的意思是受欢迎程度,例如:大多数人都有这样的人:
文章表
ID | TITLE
评论表
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
答案 0 :(得分:2)
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
答案 1 :(得分:0)
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
<强>解释
好的,我在这里假设需要整个注释行,所以为了不在每个列中使用聚合函数,以防我们想要在主选择中包含GROUP BY,我创建了一个表,尽管内联选择以获取评论最高的文章:
(SELECT COUNT(ARTICLE_ID) AS C, `ARTICLE_ID` FROM `commets` GROUP BY `ARTICLE_ID`)
并将此表别名为 TAB ,然后在此表中加入文章id与注释表以获取注释列和文章表以获取文章的标题,然后命令整个通过内联选择中的计数列 C 进行查询。