Удаление строк из таблицы SQLite, если совпадение не существует в другой таблице

Мне нужно удалить строки из таблицы SQLite, где их идентификаторы строк не существуют в другой таблице. Оператор SELECT возвращает правильные строки:

SELECT * FROM cache LEFT JOIN main ON cache.id=main.id WHERE main.id IS NULL;

Однако оператор delete генерирует ошибку SQLIte:

DELETE FROM cache LEFT JOIN main ON cache.id=main.id WHERE main.id IS NULL;

Ошибка: SQLite Ошибка 1 - рядом с "левым": синтаксическая ошибка. Есть ли другой синтаксис, который я мог бы использовать?

Ответ 2

Поскольку вы идете по маршруту подзапроса, вы можете полностью избавиться от соединения и упростить запрос:

DELETE FROM cache WHERE id NOT IN (SELECT id from main);