Java 如何选择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

我想选择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
        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