MySQL ORDER BY 十进制值不起作用

标签 mysql sql sql-order-by

带有 order by 子句的 SQL 查询无法正常工作。

VALUES:
5.0000   
4.0000   
4.5000  
4.7500  
4.0000  
5.0000

查询:

SELECT  AVG(rating) as rating
FROM review
GROUP BY id
ORDER BY CAST(`rating` as signed) DESC  

当我执行这个查询时,输出是:

5.0000  
4.7500  
4.5000  
5.0000  
4.0000  
4.0000

我的评级列是 int(10)

最佳答案

您必须按 AVG(rating) 而不是 rating

SELECT AVG(rating) as rating FROM review GROUP BY id ORDER BY AVG(rating) DESC 

在您的例子中,别名和列具有相同的名称。为了避免混淆,你可以这样做:

SELECT AVG(rating) as avgrating FROM review GROUP BY id ORDER BY avgrating DESC 

关于MySQL ORDER BY 十进制值不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42526952/

相关文章:

mysql - 不从数据库中获取数据

php - 绑定(bind)结果和fetch_assoc有什么区别

mysql - 错误 1005 : Can't create table

MYSQL order by 坚持使用filesort

mySQL ORDER BY SUM of double GROUP BY,保留组

MySQL 字段列表中的未知列。触发引起的?

mysql - SQL查询根据条件返回额外的列

mysql - 跨列选择不同的条目?

sql - SQL中如何对varchar进行排序?

mysql - 如何比较和替换mysql表中的行?