php - MySQL 查询按特定结果/行在另一个表中的投票数对结果进行排序

标签 php mysql join subquery

好的,所以我在下面有一个查询,我正试图开始工作。

基本上一切正常,直到“投票”表的内部连接。我想要做的是根据每个内容行在另一个名为 votes 的表中的投票数来排序此查询的结果。我知道我离我需要做的事情不远了!

提前致谢!

mysql_query("
SELECT content.id, content.type, content.title, content.url, users.username
FROM content 
INNER JOIN users ON content.uploaderuid = users.id 
INNER JOIN votes  ON votes.id = content.id
WHERE (content.type = 'pic') 
ORDER BY COUNT(votes.id) DESC");

最佳答案

尝试做:

SELECT content.id, content.type, content.title, content.url, users.username
FROM content 
INNER JOIN users ON content.uploaderuid = users.id 
INNER JOIN (
   SELECT id,COUNT(*) as voteCount
   FROM votes  
   GROUP BY id
) v ON v.id = content.id
WHERE (content.type = 'pic') 
ORDER BY v.voteCount DESC

当您直接对 votes 表执行 INNER JOIN 时,如果同一 ID 多次出现,您将获得比执行 JOIN 之前更多的行。

如果您只对每个 id 的投票数感兴趣,通过对计算每个 id 的投票数的子查询执行 JOIN,将保留您之前的查询结果,并让您使用 voteCount通过它订购。

关于php - MySQL 查询按特定结果/行在另一个表中的投票数对结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20499776/

相关文章:

php/mysql 随机排序日期

php - 移动到新服务器后无法写入 MYSQL DB

php - 动态预处理语句不好吗? (使用 php + mysqli)

php - 在 Yii 中调试 SQL 查询。 CFileLogRoute 与 CWebLogRoute

php - MySQL 在更新其他字段时不更新数据库中的单个字段

Mysql - 如果第一个条件为 TRUE,则运行下一个 AND 条件

mysql - 多对多连接没有重复行

c# - 我怎样才能加入一个字符串数组,但首先删除数组中的空元素?

php - jetty 服务器运行php代码

php - 在整个网站的一页中制作页脚