[英]MYSQL order rows by most appearing value in other table
我正在使用PHP和MYSQL构建基本的社交网络。 我正在尝试在表格中显示4个最受欢迎的帖子。
我有两个表,表1是'discussions'
,表2是'comments'
。 表'discussions'
具有列“ id
”,该列与表'comments'
中的列'discid'
匹配。 因此,每当用户对讨论发表评论时,都会在表“ comments”中添加一行,其中'discid'
是讨论的ID。 我可以显示最新的评论和讨论,但无法显示最受欢迎的讨论,因此评论最多的讨论。
因此,我需要找到一种方法,通过某种讨论ID在表'comments'
'discid'
列中出现的次数来对我的表讨论进行排序。
例如:
On the discussion with id 7, there are 4 comments with discid 1.
On the discussion with id 2, there are 3 comments with discid 2.
所以我需要我的SQL查询显示第一个ID 7,然后显示ID 2,...
有人可以帮助我吗? 将不胜感激!
让我知道它是否有效。
SELECT d.*
FROM discussions AS d
JOIN ( SELECT c.*, COUNT(c.discid) AS cnt
FROM comments AS c
GROUP BY c.discid
) AS c2 ON ( c2.discid = d.id )
ORDER BY c2.cnt DESC;
SELECT discid AS Discussion_ID, COUNT(*) AS occurences
FROM comments
GROUP BY discid
ORDER BY occurences DESC
LIMIT 4
希望这可以帮助。
我会尝试像
SELECT discid,COUNT(*) AS cnt FROM comments GROUP BY discid ORDER BY cnt DESC LIMIT 5;
这将为您显示discid-s列表和称为“ cnt”的评论数,并按其降序排列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.