Como eu faço um UPDATE ao juntar tabelas no SQLite?

Eu tentei :

UPDATE closure JOIN item ON ( item_id = id ) SET checked = 0 WHERE ancestor_id = 1 

E:

 UPDATE closure, item SET checked = 0 WHERE ancestor_id = 1 AND item_id = id 

Ambos funcionam com o MySQL, mas eles me dão um erro de syntax no SQLite.

Como posso fazer isso UPDATE / JOIN funciona com o SQLite versão 3.5.9?

Você não pode. O SQLite não suporta JOINs nas instruções UPDATE .

Mas você provavelmente pode fazer isso com uma subconsulta:

 UPDATE closure SET checked = 0 WHERE item_id IN (SELECT id FROM item WHERE ancestor_id = 1); 

Ou algo assim; Não está claro exatamente qual é o seu esquema.

Você também pode usar REPLACE, então você pode usar a seleção com junções. Como isso:

 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 
Intereting Posts