如何在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中给我一个语法错误。
我怎样才能使这个UPDATE / JOIN与SQLite版本3.5.9一起工作?
你不能。 SQLite 不支持UPDATE语句中的JOIN 。
但是,你可以用一个子查询来代替:
UPDATE closure SET checked = 0 WHERE item_id IN (SELECT id FROM item WHERE ancestor_id = 1);
或类似的东西; 目前还不清楚你的模式是什么。
您也可以使用REPLACE,然后您可以使用连接进行select。 喜欢这个:
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