当“选择”中的同一表具有其他联接时更新

时间:2018-07-09 12:55:13

标签: mysql updates

我的previous question被标记为重复,但可能因为我的案子比较复杂,所以我在那找不到所需的答案。

如有必要,我将制作一个SqlFiddle,但现在的问题是我正在执行以下操作:

Select if(A.Value>10,concat(A.Field1,B.FIeld),concat(A.Field1,C.Field1)) 
from A
Inner Join B on A.Field3=B.Field3
Inner Join C on A.Field3=C.Field3

尝试使用我所指出的dupe问题中的任何选项都会失败,因为这意味着我正在对该选择进行另一个联接,至少对我来说这是不可能的,而我的最终更新目标是:

Update A set Display=(Select if(A.Value>10,concat(A.Field1,B.FIeld),concat(A.Field1,C.Field1)) 
from A
Inner Join B on A.Field3=B.Field3
Inner Join C on A.Field3=C.Field3)

1 个答案:

答案 0 :(得分:0)

您是否只想在MySQL中加入更新语法?

UPDATE A
FROM A
INNER JOIN B
    ON A.Field3 = B.Field3
INNER JOIN C
    ON A.Field3 = C.Field3
SET Display = CASE WHEN A.Value > 10
                   THEN CONCAT(A.Field1, B.Field)
                   ELSE CONCAT(A.Field1,C.Field1) END;