我的服务器将从数据库中检索最新的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");
}
答案 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视为数字并选择最大值。