0

我正在测试多重更新 SET col1 = col2 WHEN col1 != col2

我不明白,为什么它不起作用。我在输出中只看到有关受影响行的信息,Row matched而没有看到有关受影响行的信息

UPDATE db.t1
    JOIN db.t2
    ON  t1.id = t2.id
    JOIN db.t3
    ON t2.id = t3.id
SET col1 = CASE
    WHEN col1 != col2
    THEN col1 = col2
    END
WHERE t1.id = t2.id AND t3.id = t2.id and t1.id = 2
4

1 回答 1

1

对此保持警惕.. THEN col1 = col2 .. 在这种情况下,代码被评估为逻辑条件(结果可能是 0 或 1)..

如果您想根据案例结果将 col2 设置为 col1,那么您应该使用

UPDATE db.t1
JOIN db.t2 ON  t1.id = t2.id
JOIN db.t3  ON t2.id = t3.id
SET col1 = CASE
    WHEN col1 != col2
    THEN  col2
    END
WHERE t1.id = t2.id 
AND t3.id = t2.id 
AND t1.id = 2
于 2018-12-25T16:55:49.183 回答