php - 如果有的话,按照另一个表中出现的次数对 MySQL 表中的结果进行排序

标签 php mysql join

我知道可能有人问过这个问题,但我认为这比我通过搜索功能找到的问题稍微复杂一些。

使用 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/

相关文章:

php - 从一个表中选择与另一表中的值匹配的不同且随机的行

PHP OnClick 文件下载使用存储在 MySQL 中的文件路径

php - 在没有表单操作的情况下获取php变量中的输入标签值

php - 使用 SQL 搜索时更高级的搜索引擎功能

PHP 解析链接/电子邮件

PHP 和 MySQL - 何时启动网站

使用 JOIN 的 MySQL 语法

MYSQL 在连接语句中选择最大日期

Python - 按分隔符拆分多列

php - 需要在 include()ed css 文件之间添加换行符