gpt4 book ai didi

java - SQLITE - 'ORDER' 附近的 JDBC 错误

转载 作者:行者123 更新时间:2023-12-01 21:09:32 27 4
gpt4 key购买 nike

我正在运行一个更新语句,该语句在 sqlite 中运行得很好,但在 jdbc 中运行失败。

命令:

UPDATE BKPSERVER set BKP_STATUS = 'S' 
where CLIENT_IP = '192.168.0.16' AND BKP_STATUS='R'
ORDER BY ROWID DESC
LIMIT 1;

但是使用 jdbc 会失败并出现以下语句。

enter coException in thread "main" org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (near "ORDER": syntax error)

请告诉我如何解决这个问题,因为这根本没有意义。

最佳答案

如果您查看 SQLite's UPDATE 的语法图:

enter image description here

您应该注意到,没有提及 ORDER BY 子句。无论如何,在 UPDATE 中包含 ORDER BY 确实没有多大意义:您正在更新一组记录,因此无需排序,与 LIMIT 子句类似。你应该说:

UPDATE BKPSERVER set BKP_STATUS = 'S' where CLIENT_IP = '192.168.0.16' AND BKP_STATUS='R';

如果存在多个包含该 CLIENT_IPBKP_STATUS 的记录,那么您必须通过其他方式(也许是子查询)找到唯一的记录:

UPDATE BKPSERVER
set BKP_STATUS = 'S'
where rowid = (
select rowid
from BKPSERVER
where CLIENT_IP = '192.168.0.16'
AND BKP_STATUS='R'
ORDER BY ROWID DESC
LIMIT 1
);
<小时/>

某些版本的 SQLite 是使用 SQLITE_ENABLE_UPDATE_DELETE_LIMIT 标志集构建的,因此 UPDATE 支持 ORDER BYLIMIT >;对于那些 SQLite 构建,UPDATE 看起来像:

enter image description here

但似乎您的 SQLite 不是在启用此标志的情况下构建的。

关于java - SQLITE - 'ORDER' 附近的 JDBC 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41419965/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com