我正在尝试通过sqlite-JDBC使用带有LIMIT子句的update查询。
假设表中有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需要设置才能使limit子句与update查询一起工作。
我知道SELECT方法适用于LIMIT子句,但是我需要两个查询来完成这个任务: SELECT然后UPDATE。
如果没有办法让LIMIT与UPDATE一起工作,那么我将只使用稍微更混乱的方法,即使用查询和子查询来让事情正常工作。
也许有一种方法可以让sqlite-JDBC在集成的sqlite引擎之外使用外部sqlite引擎,该引擎已经使用标志集进行了编译。
感谢您的帮助。
发布于 2020-05-22 21:12:26
您可以尝试执行以下查询:
UPDATE mytable SET user = :name1
WHERE ROWID = (SELECT MIN(ROWID)
FROM mytable
WHERE user = :name2);ROWID是一个在所有表中都可用的特殊列(除非使用WITHOUT )
https://stackoverflow.com/questions/61810617
复制相似问题