在SQLite中更新前n条记录

时间:2016-02-26 11:00:33

标签: android sqlite

我想从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开始,这应该适用于语法。 syntax

我哪里出错了?

1 个答案:

答案 0 :(得分:2)

HTML5 specification说:

  

如果使用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);