0

这是我的 MySQL 表

在此处输入图像描述

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

我得到“9”

不应该是 10 吗?

我该如何解决这个错误?

谢谢!

4

2 回答 2

1

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

select max(animal_id + 0)
from info_table

当您在 MySQL 中将两个值相加并且一个是字符串时,初始数字字符(如果有)将转换为数字。

于 2013-04-27T16:51:20.250 回答
0

从您其他列中的示例数据来看,您已将所有列设置为 type VarChar,即 text 。您看到的“异常结果”是这是一个坏主意的众多原因之一。

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

与其解决这个问题和您将遇到的其他问题(例如日期字段),不如始终在每一列上使用正确的类型设置您的表格。

于 2013-04-27T16:54:57.443 回答