2014-01-30 82 views
1

我一直在使用MySQL很长一段时间,我从来没有遇到过这个问题。我有一张存储应用程序分数的表格。出于某种原因,当我按score ASC排序时,最高分数首先显示,最低分数为最后一个分数。请看下面的截图:MySQL没有正确排序数据

enter image description here

这里是我的查询:

SELECT category, subject, max(score) as score FROM scores 
WHERE customer_id = 1086 AND category = 'Business' 
GROUP BY subject ORDER BY score ASC 

上为什么发生这种情况有什么想法?

+1

这可能会发生,因为'Score'被视为字符串而不是数字。 – user2989408

+0

有没有办法改变它? – three3

+0

你可以在这里转储你的表结构吗?有些时候不正确的数据类型在排序时变得很疯狂。 – Elshan

回答

4

将字符串(例如varchar/text)的分数的数据类型更改为数字(例如int)。这应该解决排序问题。

当值按字符串(按字母顺序)排序时,'60'中的'6'在'8'之前。

作为临时解决办法,您也可以尝试order by score+0 asc尝试将您的价值转换为数字。

+0

谢谢!这对我有用! – three3

+0

标记为答案并不意味着问题已关闭:D –

0

尝试选择CAST(max(score) AS INTEGER) as Score,然后ORDER BY Score