我知道可能会问这个问题,但我认为这比通过搜索功能找到的要复杂一些。
使用PHP代码,我希望从MySQL表中按照 DESC 顺序中的其他表的出现次数(如果有的话)来订购结果。
让我具体解释一下自己。
我有两张桌子:
第一张表,名为“post”,包含以下非详尽内容:
第二个表,称为“post_votes”,其中包含以下非详尽内容:
实际上:如果用户投票支持现有帖子(“post”表中列出的帖子),则在“post_votes”表中创建一条记录,将post id作为post_id插入,将用户id作为user_id插入。 因此,如果多个用户投票支持,则可以存在从0到多次发布的帖子,这构成了帖子的投票数量。
现在,这就是我希望订购结果的方式。我需要通过他们的投票,即“post_votes”表中的出现次数来命令“post”表中列出的帖子。
有一件事要记住,有些帖子可能永远不会收到任何投票,例如在第二张表中会找到0次。
我很感激有关该主题的任何帮助!
答案 0 :(得分:1)
SELECT post.id, COUNT(post_votes.post_id) AS upvotes
FROM post, post_votes
WHERE post.id = post_votes.post_id
GROUP BY post.id
ORDER BY upvotes DESC
此刻我不能测试此查询的有效性,但这是这样的。
答案 1 :(得分:0)
您可以使用左连接
select *,count(post_id) voteCount from post left join post_votes on
post.id=post_votes.post_id group by post_id order by voteCount desc