2016-02-26 5 views
1

Я хочу обновить первые n записей в моей SQLite DB из приложения Android. Ниже приведены запросы, которые я пробовал до сих пор. Я получаю синтаксическую ошибку около order.Обновление первых n записей в SQLite

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. –

Смежные вопросы