SELECT MAX MySQL查询 - 异常结果

时间:2013-04-27 16:45:33

标签: php mysql database

这是我的MySQL表

enter image description here

当我执行以下查询时:SELECT MAX(Animal_ID)FROM info_table

我得到“9”

不应该是10?

如何解决错误?

谢谢!

2 个答案:

答案 0 :(得分:1)

我的猜测是animal_id被存储为字符字段而不是数字字段。如果你想要数字最大值,试试这个:

select max(animal_id + 0)
from info_table

在MySQL中一起添加两个值,一个是字符串时,初始数字字符(如果有)将转换为数字。

答案 1 :(得分:0)

根据其他列中的示例数据判断,您已创建了VarChar类型的所有列,即文本。你看到的“异常结果”是这个坏主意的众多原因之一。

对一系列字符串进行排序通常以“按字母顺序”或“词汇”顺序进行 - “b”出现在“z”之前,而不是在“aaa”之前。完全由数字组成的字符串可能看起来像数字,但它们将像任何其他字符串一样排序 - 所以“1”在“2”之前出现,但是以“1”开头的任何字符串也是如此,例如“1a”,“10”, “100”。这通常不是你想要的。

而不是解决这个以及您将遇到的其他问题,例如:日期字段,始终在每列上使用正确的类型设置表格。