用于从数据库列获取最大ID的SQL语句

时间:2014-01-02 04:54:57

标签: sql database

我有一个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?

提前致谢。

3 个答案:

答案 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