Как сделать обновление при соединении таблиц на SQLite?
пробовал :
UPDATE closure JOIN item ON ( item_id = id )
SET checked = 0
WHERE ancestor_id = 1
и:
UPDATE closure, item
SET checked = 0
WHERE ancestor_id = 1 AND item_id = id
оба работает с MySQL, но те дают мне синтаксическую ошибку в SQLite.
Как я могу сделать это обновление / JOIN работает с SQLite версии 3.5.9 ?
2 ответа:
вы не можете. SQLite не поддерживает соединения в операторах обновления.
но, вероятно, вы можете сделать это с помощью подзапроса:
UPDATE closure SET checked = 0 WHERE item_id IN (SELECT id FROM item WHERE ancestor_id = 1);
или что-то в этом роде; не совсем ясно, что такое ваша схема.
вы также можете использовать заменить затем вы можете использовать выбор с соединениями. Вот так:
REPLACE INTO clusure SELECT sel.col1,sel.col2,....,sel.checked --checked should correspond to column that you want to change FROM ( SELECT *,0 as checked FROM closure LEFT JOIN item ON (item_id = id) WHERE ancestor_id = 1) sel