我正在尝试将一组需要通过JOIN过滤的行更新到另一个表,但是不会进行实际的更新。
示例:
要更新的表称为t2 它有一个称为t1的主表。 要更新的实际行是从t2开始的行,其中t1的状态为ACTIVE。 实际要更新的字段称为t2.t3_field,将从表t3更新。
UPDATE t2
JOIN t1
ON t1.id = t2.t1_id
SET t3_field= t3.id
FROM t3
WHERE t3.old_id = t2.old_third_table_id
AND t1.status = 'ACTIVE';
此代码无效。有一个简单的方法可以做到这一点吗?
感谢您的帮助。
Dov
答案 0 :(得分:1)
As documented in the manual,您不能在JOIN
或FROM
子句前写SET
。
必须是这样的:
UPDATE t2
SET t3_field= t3.id
FROM t1, t3
WHERE t1.id = t2.t1_id
AND t3.old_id = t2.old_third_table_id
AND t1.status = 'ACTIVE';