当select中的同一个表带有附加连接时更新

dzjeubhm  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(297)

这个问题在这里已经有答案了

mysql基于另一个表值更新表(7个答案)
两年前关门了。
我以前的问题被标记为重复,但我找不到答案,我在那里寻找可能是因为我的情况更复杂。
如果必要的话,我会做一个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问题中的任何选项都会失败,因为这意味着我正在执行另一个加入此select的操作,至少对我来说是不可能的,我的最终更新目标是:

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)
tez616oj

tez616oj1#

你只需要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;

相关问题