【问题标题】:sqlite inner join update - 3 tablessqlite 内部连接更新 - 3 个表
【发布时间】:2015-01-29 14:14:45
【问题描述】:

我在 SQLite 上有 3 个表,我想根据 table3 中的值更新 table1。

在 MySQL 上:

UPDATE table1 t1 
JOIN table2 t2 ON t2.id = t1.id_t2 
JOIN table3 t3 ON t2.id_t3 = t3.id 
SET t1.name = 0 WHERE t3.name = 0;

我知道,SQLite 不支持 UPDATE-JOIN,但我不知道,没有 JOIN 有什么好的解决方案?

【问题讨论】:

    标签: sqlite join updates multiple-tables


    【解决方案1】:

    您需要找到要更新的行的 id,而不使用将在其上运行更新的表。您只能从两个表“table2”和“table3”中找到这些 ID。简单的子查询将帮助您:

    UPDATE table1 SET name = 0 
    WHERE id_t2 IN (
        SELECT t2.id FROM table2 t2 
        INNER JOIN table3 t3 ON t2.id_t3 = t3.id 
        WHERE t3.name = 0
    )
    

    【讨论】:

    • 谢谢,但我更正了我的代码,你现在可以看看吗?
    • @Rajdon 我已经更新了答案。如果您需要更多解释,请告诉我。
    【解决方案2】:
    UPDATE t1 SET name = 0 
    WHERE t1.id_t2 IN (SELECT t2.id FROM t2 
    WHERE t2.id_t3 IN (SELECT t3.id FROM t3 WHERE t3.name = 0));
    

    【讨论】:

      猜你喜欢
      • 2012-09-18
      • 2020-04-04
      • 2016-08-18
      • 1970-01-01
      • 1970-01-01
      • 2019-06-25
      • 1970-01-01
      • 2014-06-02
      • 2015-05-07
      相关资源
      最近更新 更多