Команда SqLite Delete с подзапросом - PullRequest
0 голосов
/ 24 августа 2011

У меня следующий запрос:

SELECT * FROM (
    SELECT * FROM pojmovi WHERE pojam LIKE '%og'
) WHERE pojam NOT LIKE '%olog';

Это работает, как и ожидалось, выбирая все из столбца pojmovi, который заканчивается на 'og', но не на 'olog', теперь я хочу удалить эти результаты, поэтому я пытаюсь что-то вроде:

DELETE FROM (
    SELECT * FROM pojmovi WHERE pojam LIKE '%og'
) WHERE pojam NOT LIKE '%olog';

И этот запрос вызывает вблизи "(": синтаксическая ошибка Возможно ли это как-то в sqlite?

Ответы [ 2 ]

2 голосов
/ 24 августа 2011

Это не может работать так, как вы хотите - вы пытаетесь удалить из промежуточного результата запроса, и это не имеет смысла и не допускается. Вам необходимо указать фактическую таблицу после DELETE FROM. Как то так:

 DELETE FROM pojmovi WHERE ( pojam LIKE '%og' ) AND (pojam NOT LIKE '%olog' );
0 голосов
/ 24 августа 2011

Как насчет

SELECT * FROM pojmovi WHERE pojam LIKE '%og' and pojam NOT LIKE '%olog';

и

DELETE FROM pojmovi WHERE pojam LIKE '%og' and pojam NOT LIKE '%olog';  

Ваши запросы будут медленными, потому что они не могут использовать индекс (потому что вы делаете LIKE "% ...")

...