如何在SQLite上连接表时进行更新?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (42)

我试过:

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中的语法错误。

如何使此更新/连接与SQLite版本3.5.9一起工作?

提问于
用户回答回答于

你不能。SQLite不支持UPDATE语句中的联接.

但是,您可能可以使用子查询来实现这一点:

UPDATE closure SET checked = 0 
WHERE item_id IN (SELECT id FROM item WHERE ancestor_id = 1);
用户回答回答于

您也可以使用REPLACE,然后,可以在联接中使用选择。就像这样:

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

扫码关注云+社区

领取腾讯云代金券