我知道这个问题可能已经被问过了,但我认为这比我通过搜索功能找到的要复杂一些。
使用 PHP 代码,我希望按 DESC 顺序按另一个表中的出现次数(如果有的话)对 MySQL 表中的结果进行排序。
让我具体解释一下自己。
我有两个表:
第一个表,称为"帖子",具有以下非详尽内容:
- 编号
- 。
第二个表,称为"post_votes",内容不尽:
- 编号
- post_id
- user_id
- 。
实际上:如果用户投票支持现有帖子("帖子"表中列出的帖子),则会在"post_votes"表中记录,插入帖子 ID 作为post_id,用户 ID 作为user_id。因此,如果有多个用户投票支持该帖子,则该帖子可以存在从 0 到多次出现,这构成了帖子的投票量。
现在,这就是我希望对结果进行排序的方式。我需要按投票顺序对"帖子"表中列出的帖子进行排序,即按它们在"post_votes"表中的出现次数排序。
但要记住的一件事是,有些帖子可能永远不会收到任何投票,例如,在第二个表格中会发现 0 出现。
我将不胜感激有关该主题的任何帮助!
它可能使用join and COUNT的单个SQL查询:
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
不是我目前无法测试此查询的有效性,但它是这样的。
您可以使用左联接
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