2

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

使用 PHP 代码,我希望按照DESC顺序从另一个表中出现的次数(如果有的话)对 MySQL 表中的结果进行排序。

让我具体解释一下自己。

我有两张桌子:

第一个表,称为“post”,包含以下非详尽内容:

  • ID
  • ...

第二个表,称为“post_votes”,包含以下非详尽内容:

  • ID
  • post_id
  • 用户身份
  • ...

实际上:如果用户为现有帖子(“post”表中列出的帖子)投票,则会在“post_votes”表中创建一条记录,将帖子 id 插入为 post_id,将用户 id 插入为 user_id。因此,如果多个用户投票支持该帖子,则该帖子可以存在从 0 到多次出现,这构成了该帖子的票数。

现在,这就是我希望如何排序我的结果。我需要按他们的投票排序“post”表中列出的帖子,即按他们在“post_votes”表中出现的次数。

不过要记住一件事,有些帖子可能永远不会收到任何投票,例如,在第二个表中会出现 0 次。

我将不胜感激有关该主题的任何帮助!

4

2 回答 2

1

它可以是使用joinCOUNT的单个 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

不是我现在不能测试这个查询的有效性,但它是这样的。

于 2013-10-14T10:31:24.167 回答
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
于 2013-10-14T10:31:59.933 回答