这是我的MySQL表
当我执行以下查询时:SELECT MAX(Animal_ID)FROM info_table
我得到“9”
不应该是10?
如何解决错误?
谢谢!
答案 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”。这通常不是你想要的。
而不是解决这个以及您将遇到的其他问题,例如:日期字段,始终在每列上使用正确的类型设置表格。