Mysql 带有DESC的SQL查询无法正常工作
我不明白为什么按平均顺序排序不能正确工作,因为我需要最高的平均值,而且投票是从上到下的,但DESC不能解决什么问题。我在var_dump最高中心的结果在底部,但我需要从顶部开始,然后进入底部Mysql 带有DESC的SQL查询无法正常工作,mysql,sql,sorting,join,Mysql,Sql,Sorting,Join,我不明白为什么按平均顺序排序不能正确工作,因为我需要最高的平均值,而且投票是从上到下的,但DESC不能解决什么问题。我在var_dump最高中心的结果在底部,但我需要从顶部开始,然后进入底部 SELECT c.*, r.votes, c.total_comments, ROUND(sumrate / votes) AS average FROM catalog c LEFT JOIN (SELECT r.object_id, COUNT(*) as votes, SUM(
SELECT c.*, r.votes, c.total_comments,
ROUND(sumrate / votes) AS average
FROM catalog c LEFT JOIN
(SELECT r.object_id, COUNT(*) as votes, SUM(r.rate) as sumrate
FROM ratings r
GROUP BY r.object_id
) r
ON r.object_id = c.catalog_id LEFT JOIN
(SELECT c.catalog_id, COUNT(*) as total_comments
FROM comments c
GROUP BY c.catalog_id
) c
ON c.catalog_id = c.catalog_id
GROUP BY c.catalog_id
ORDER BY average, votes DESC;
因为您可以定义每一列的顺序,而不仅仅是总的顺序。默认值为ASC 您点的菜
ORDER BY average, votes DESC
自动变成
ORDER BY average ASC, votes DESC
但是你在找
ORDER BY average DESC, votes DESC
您需要为这两列指定DESC。否则默认为ASC
SELECT c.*, r.votes, c.total_comments,
ROUND(sumrate / votes) AS average
FROM catalog c LEFT JOIN
(SELECT r.object_id, COUNT(*) as votes, SUM(r.rate) as sumrate
FROM ratings r
GROUP BY r.object_id
) r
ON r.object_id = c.catalog_id LEFT JOIN
(SELECT c.catalog_id, COUNT(*) as total_comments
FROM comments c
GROUP BY c.catalog_id
) c
ON c.catalog_id = c.catalog_id
GROUP BY c.catalog_id
ORDER BY average DESC, votes DESC;
请注意,GROUPBY是无效的,在较新的MySQL版本中是不允许的。如果指定了GROUP BY子句,则SELECT列表中的每个列引用必须标识一个分组列,或者是集合函数的参数。这是什么意思?这是分组中的短表别名吗?你能举个例子吗?