删除最后一行java MYSQL

时间:2015-09-21 15:24:50

标签: java mysql swing jdbc

我有从数据库删除行的按钮。我想问一下如何删除java中的最后一行?我只知道来自resultset的方法是.getLong(1),但它是当前行也是top row.how来获取java结果集中的最后一行?

这是我的代码

try{
    koneksi_db();
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("select * from line");
    rs.next();
    long id = rs.getLong(1);
    stmt.executeUpdate("DELETE FROM line WHERE UniqueID = '"+id+"'");
}catch(Exception e){
    JOptionPane.showMessageDialog(null, "error menghapus line");    
}

1 个答案:

答案 0 :(得分:1)

你必须定义'last' - 你可以通过命令你的结果来做到这一点,只需在查询结尾添加“按[list]排序”,按升序或降序添加“ASC”或“DESC”。您可以按任意顺序对任何列进行排序,这就是为什么定义“最后”记录的首要原因 然后添加一个限制,只返回第一行:“Limit 1”(切换你的顺序,这样1行与你定义的'last'相同。然后你可以使用“IN”语句将你的语句与子查询匹配作为删除语句中where子句的一部分。这假设没有重复项并删除一条记录。或者你可以使用列的最大/最小值 - 这将删除所有具有最小/最大值的记录,如果有的话重复记录,您要排序的列具有相同的最小/最大值。

第一种技术 - “WHERE IN”将列与子查询中的所有结果进行比较 - 这就是为什么我们将子查询的结果限制为一个结果:

DELETE FROM [table] where [column] in [SELECT [column] from [table] order by [column] asc limit 1)

第二种技术是在你的IN子句中使用min或max函数做同样的事情 - 你使用哪一个取决于你如何定义“last”记录 - 如果你绝对确定没有重复,那么这稍微多一点高效。

DELETE FROM [table] where [column] in(SELECT max([column])from [table])

你可能需要仔细检查我的SQL以确保它与mySQL兼容,有些数据库使用“IS IN”但这是基本的想法。