我有一个ID列,它应该设置为自动递增但我忘记在创建数据库时设置。假设ID是1 - 20.我使用select Max()Sql语句来获取最大的ID:
SELECT MAX(id) FROM Table_Name;
它应该让我回复20.然而,它返回给我9.我也意识到数据库中的id列是混乱的。它从1,2开始然后跳到9,10 - 20然后回到3 - 8.而8似乎是最后一排,我认为这是9来自哪里。我在数据库中的id是varchar()数据类型。
那么,有没有办法修改我的Sql语句以获取排序ID列表中的最大id?
提前致谢。
答案 0 :(得分:2)
问题可能是ID列是varchar字段,因此9大于10。
select max(convert(int, id)) from Table
答案 1 :(得分:1)
您的列是字符类型,而非数字类型,它解释了您所看到的所有内容。
尝试将其转换为数字:
select max(cast(id as signed)) from table
您还没有说过您正在使用哪个数据库,因此语法可能会有所不同以实现演示 - 请参阅数据库的在线文档。
答案 2 :(得分:0)
试试这个:
SELECT TOP 1 Id FROM Table ORDER BY Convert(INT, id) DESC