sqlite 内部连接更新 - 3 个表
sqlite inner join update - 3 tables
我在 SQLite 上有 3 个表,我想根据表 3 中的值更新表 1。
在 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 有什么好的解决方案?
您需要在不使用 table 的情况下找到要更新的行的 ID,更新将是 运行。您只能从两个 table '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
)
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));
我在 SQLite 上有 3 个表,我想根据表 3 中的值更新表 1。
在 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 有什么好的解决方案?
您需要在不使用 table 的情况下找到要更新的行的 ID,更新将是 运行。您只能从两个 table '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
)
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));