Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 带有DESC的SQL查询无法正常工作_Mysql_Sql_Sorting_Join - Fatal编程技术网

Mysql 带有DESC的SQL查询无法正常工作

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(

我不明白为什么按平均顺序排序不能正确工作,因为我需要最高的平均值,而且投票是从上到下的,但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(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列表中的每个列引用必须标识一个分组列,或者是集合函数的参数。这是什么意思?这是分组中的短表别名吗?你能举个例子吗?