带有限制子句的 Sqlite-JDBC 更新?



我正在尝试使用 sqlite-JDBC 将更新查询与 LIMIT 子句一起使用。

假设表中有 100 个 bob,但我只想更新其中一条记录。

示例代码:

String name1 = "bob";
String name2 = "alice";
String updateSql = "update mytable set user = :name1 " + 
"where user is :name2  " + 
"limit 1";

try (Connection con = sql2o.open()) {
con.createQuery(updateSql)
.addParameter("bob", name1)
.addParameter("alice", name2)
.executeUpdate();
} catch(Exception e) {
e.printStackTrace();
}

我收到一个错误:

org.sql2o.Sql2oException: Error preparing statement - [SQLITE_ERROR] SQL error or missing database (near "limit": syntax error)

用 sqlite-JDBC 3.31

SQL2O 1.6(简易数据库查询库(

旗帜:

SQLITE_ENABLE_UPDATE_DELETE_LIMIT

需要设置以使限制子句与更新查询一起使用。

我知道 SELECT 方法适用于 LIMIT 子句,但我需要 2 个查询才能完成此任务;选择"然后更新"。

如果没有办法让 LIMIT 与 UPDATE 一起使用,那么我将只使用稍微混乱的查询和子查询方法来让事情正常工作。

也许有一种方法可以让 sqlite-JDBC 在集成引擎之外使用外部 sqlite 引擎,该引擎已使用标志集进行编译。

任何帮助表示赞赏。

您可以改为尝试此查询:

UPDATE mytable SET user = :name1
WHERE ROWID = (SELECT MIN(ROWID) 
FROM mytable
WHERE user = :name2);

ROWID是所有表中可用的特殊列(除非您使用 WITHOUT ROWID(

最新更新