我想从Android应用程序更新我的SQLite DB中的前n条记录。以下是我迄今为止尝试过的查询。我在order
附近收到语法错误。
update label set label_is_used = 1 where label_name !='temp' and label_cnt != 0 order by label_cnt desc limit 3
------------------------------------
update label set label_is_used = 1 where label_name !='temp' and label_cnt != 0 order by label_cnt limit 3
从docs开始,这应该适用于语法。
我哪里出错了?
答案 0 :(得分:2)
如果使用SQLITE_ENABLE_UPDATE_DELETE_LIMIT编译时选项构建SQLite,则使用可选的ORDER BY和LIMIT子句扩展UPDATE语句的语法
默认情况下,该选项未启用,当然也不适用于Android。
作为解决方法,确定要在子查询中更新的记录:
UPDATE label
SET label_is_used = 1
WHERE label_id IN (SELECT label_id -- or whatever you use as ID
FROM label
WHERE label_name != 'temp'
AND label_cnt != 0
ORDER BY label_cnt DESC
LIMIT 3);