我正在使用PHP和MYSQL开发基本的社交网络。我试图在表格中显示4个最受欢迎的帖子。
我有两个表,表1是'discussions'
,表2是'comments'
。
表格'discussions'
有一列“id
”,与表'discid'
中的列'comments'
相匹配。因此,只要用户对讨论发表评论,就会在表“评论”中添加一行,其中'discid'
是讨论的ID。我可以展示最新的评论和讨论,但我不能让它展示最热门的讨论,所以讨论的评论最多。
因此,我需要找到一种方法,根据表格'discid'
的{{1}}列中某个讨论ID的出现次数对表格讨论进行排序。
例如:
'comments'
所以我需要我的sql查询显示第一个id 7然后id 2,...
任何可以帮助我的人?非常感谢!
答案 0 :(得分: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;
答案 1 :(得分:0)
<!--[if !IE7]><![IGNORE[--><![IGNORE[]]><link rel=stylesheet href="path/to/bootstrap.css" type="text/css" media="screen"><!--<![endif]-->
希望这有帮助。
答案 2 :(得分:0)
我会尝试像
这样的东西SELECT discid,COUNT(*) AS cnt FROM comments GROUP BY discid ORDER BY cnt DESC LIMIT 5;
这将显示一个discid-s列表和被称为“cnt&#39;”的评论计数,按顺序递减它们。