我知道可能有人问过这个问题,但我认为这比我通过搜索功能找到的问题稍微复杂一些。
使用 PHP 代码,我希望根据另一个表中出现的次数对 MySQL 表中的结果进行排序,如果有的话,按 DESC 顺序。
让我具体解释一下。
我有两个表:
第一个表,称为“post”,包含以下非详尽内容:
- 编号
- ...
第二个表,名为“post_votes”,包含以下非详尽内容:
- 编号
- post_id
- 用户编号
- ...
实际上:如果用户投票给现有帖子(列在“post”表中的帖子),则会在“post_votes”表中创建一条记录,插入帖子 ID 作为 post_id,用户 ID 作为 user_id。 因此,如果有多个用户投票支持该帖子,则该帖子可能会出现 0 到多次,这构成了帖子的投票数。
现在,这就是我希望如何排序我的结果。我需要按照他们的投票对“post”表中列出的帖子进行排序,即按照“post_votes”表中出现的次数。
不过要记住一件事,有些帖子可能永远不会收到任何投票,例如,在第二个表中会找到 0 次出现。
如果能就此主题提供任何帮助,我将不胜感激!
最佳答案
可能是使用 join 的单个 SQL 查询和 COUNT :
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
不是我现在无法测试此查询的有效性,但它是沿着这条线的。
关于php - 如果有的话,按照另一个表中出现的次数对 MySQL 表中的结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19358136/