2016-02-26 79 views
1

我想从android应用程序更新SQLite数据库中的前n条记录。以下是我迄今为止尝试过的查询。在order附近出现语法错误。更新SQLite中的第n条记录

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

我在哪里出错?

回答

2

documentation you linked to说:

如果SQLite是与SQLITE_ENABLE_UPDATE_DELETE_LIMIT编译时选项,则UPDATE语句的语法被扩展为可选的ORDER BY和LIMIT子句内置

该选项是没有启用默认情况下,当然不是在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); 
+0

这应该工作。但是,有关如何启用该选项并使我的查询工作的任何想法?好奇。 :) – Mangesh

+0

哦,只需重新编译并重新安装Android操作系统的那部分。 –