我正在尝试使用 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(