好的,所以我在下面有一个查询,我正试图开始工作。
基本上一切正常,直到“投票”表的内部连接。我想要做的是根据每个内容行在另一个名为 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/