SQL列AVG()被视为字符串而不是按DESC排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL列AVG()被视为字符串而不是按DESC排序相关的知识,希望对你有一定的参考价值。
苦苦挣扎下面的sql语句。
数据库是mysql,得分为DECIMAL(5,1)
我希望通过列内的平均分数来订购
...AVG(COALESCE(score,0)) AS scoreAvg ... ORDER BY scoreAvg DESC
但结果并不像预期的那样,我的产品得分低于没有分数的分数(得分为0)。
看起来像得分被视为一个字符串,我试过。
CAST(SCORE AS DECIMAL(5,1))
但没有运气。
感谢您的任何帮助,
问候
答案
尝试重复表达式:
ORDER BY AVG(COALESCE(score, 0))
我想到的第一个解释是scoreavg
已经在一个表中,并且排序是使用列而不是计算表达式。
另一答案
您的值可能在varchar(max)中因此您要将varchar转换为decimal或numeric并添加
Order by avg(COALESCE(column name,0))
要么
Order by avg(coalesce(cast(column name as decimal (5,1)),0.0)
另一答案
剥离我的sql字符串后,结果我的TEXT格式的“image_path”列导致了问题。将其更改为varchar(255)。
我没有发布它,因为我认为它不相关。
无论如何现在修好了。必须是MySQL中的一个错误
以上是关于SQL列AVG()被视为字符串而不是按DESC排序的主要内容,如果未能解决你的问题,请参考以下文章