Java 如何选择MySQL表中的最后一行?我没有任何自动递增键
我想选择MySQL表中的最后一行。我在那个表中没有任何自动递增键Java 如何选择MySQL表中的最后一行?我没有任何自动递增键,java,mysql,Java,Mysql,我想选择MySQL表中的最后一行。我在那个表中没有任何自动递增键 public String getLastLeaveId() { try { Statement stmt = getConnection(); String sql="select leaveID from applied leave"; // here I want some logic that will fetch only leave_id from last row only
public String getLastLeaveId() {
try {
Statement stmt = getConnection();
String sql="select leaveID from applied leave"; // here I want some logic that will fetch only leave_id from last row only
stmt.execute(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
在您现在订购的任何列上按降序排列,并在末尾限制0,1。这就是您想要的
SELECT * FROM table_name ORDER BY id DESC LIMIT 1
数据库表中没有隐式排序。如果插入行时没有自动递增列、日期/时间列或遵循自然顺序的其他列,则只能使用其他方式来伪造 问题中没有显示表结构,也没有说明是使用MyISAM还是InnoDB。MyISAM通常按插入行的顺序存储行,这样您就可以使用Java中的ResultSet.last之类的不足来获取最后一行,但如果您不使用MyISAM,您就不能依赖它。默认存储引擎InnoDB以更高效的B树顺序存储记录,并且根本不保留插入顺序,而是根据主键的顺序存储记录 简言之,您需要选择一个具有某种自然顺序的字段,或者创建一个字段并按此顺序排序。它可能很有用
SELECT MAX(ID) FROM YourTable
// Similarly, ORDER BY with LIMIT:
SELECT ID FROM YourTable ORDER BY ID Desc Limit 1
如果没有where子句和/或ORDERBY条件,则无法直接获取查询中的最后一行。您需要遍历所有行以在最后一行之前停止 我看到的唯一积极的选择是: 选择所有行。执行rs.last,然后读取它。 基于列使用order by desc子句。 在所有选定行上定义虚拟行数并运行select 使用该行上的desc order\u num。 执行两条语句。一个用于查找行数,另一个用于查找行数 限制获取最后一行。 上面第四个选项的伪示例: int rowCount=从my_表中选择count*的结果; 字符串查询=从my_表中选择*限制+行计数-1+ 1. rs=stmt。执行上述查询。 读取从rs获取的唯一记录,除最后一条记录外无其他记录。
如何定义“last”?如果是java,则显示代码我正在编写一个字符串sql查询,由语句执行,并获取结果集。您能显示表结构吗?主键是什么?所有可能的重复项是什么
SELECT MAX(ID) FROM YourTable
// Similarly, ORDER BY with LIMIT:
SELECT ID FROM YourTable ORDER BY ID Desc Limit 1