繁体   English   中英

MYSQL按其他表中出现最多的值对行进行排序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM