SQL查询用于从mysql数据库返回最新的ID,而不是返回99999

时间:2018-03-13 16:35:37

标签: java mysql sql

我的服务器将从数据库中检索最新的ID,现在它被卡住并继续返回ID 99999,即使最新的ID现在是100040

我的代码是:

String insertTable = "SELECT * FROM dutyofcare ORDER BY Id DESC LIMIT 1";
ps = conn.prepareStatement(insertTable);
rs = ps.executeQuery();
String ResultS = "";
if (rs.next()) {
    ResultS += rs.getString("Id");
}

1 个答案:

答案 0 :(得分:1)

问题是查询中的ORDER BY正在进行词法(逐个字符)排序,其中9 总是在1之后,而不是数字排序处理数字位置。这是因为ID的列类型。您需要的是在排序完成之前确保ID是一个数字。

将您的ID更改为数字列类型并在查询下方运行:

SELECT MAX(ID) from dutyofcare;

或者,如果您想保留列类型(效率低于上述选项):

select MAX(cast(ID AS UNSIGNED)) from dutyofcare;

或者,如果您想保留列类型并只修复现有查询(所有选项效率最低)

select * from dutyofcare order by CAST(ID AS UNSIGNED) desc limit 1;

所有这些方法基本上将ID视为数字并选择最大值。