如何根据其他表中的值编写更新

smdnsysy  于 2021-06-17  发布在  Mysql
关注(0)|答案(5)|浏览(274)

我有一个关于mysql“更新”的问题。我有两张table table1 以及 table2 它们是相连的 table1.id=table2.tab1 . 现在,我想更新 table2 取决于中的值 table1 . 我试着这样做:

UPDATE table2 SET table2.val='new value' 
WHERE table1.id=table2.tab1 AND table1.val='xy'

换句话说,我想改变这个值 val 对于中的所有条目 table2 其中对应的条目 table1 具有值“xy”。
不幸的是,这不起作用。有人能给我个提示吗?

x4shl7ld

x4shl7ld1#

UPDATE B
SET B.val='new value' 
FROM table1 A
JOIN table2 B ON A.id=B.tab1
WHERE A.val='xy'
t1qtbnec

t1qtbnec2#

UPDATE table2
JOIN table1 ON table1.id=table2.tab1 
SET table2.val='new value' 
WHERE table1.val='xy'
k75qkfdt

k75qkfdt3#

这不是正确的语法。你应该使用更新连接

UPDATE table2
JOIN   table1 ON table1.id = table2.tab1
SET    table2.val = 'new value' 
WHERE  table1.val = 'xy'
t9eec4r0

t9eec4r04#

应该使用update+join语句

UPDATE table2 
JOIN table1 ON table1.id=table2.tab1 
SET table2.val='new value' 
WHERE table1.val='xy'

或子查询

UPDATE table2
SET table2.val='new value' 
WHERE table2.tab1 IN (
    SELECT id
    FROM table1
    WHERE table1.val='xy'
)
t3psigkw

t3psigkw5#

UPDATE table2 
SET table2.val='new value' 
FROM table1 
    JOIN table2 ON table1.id=table2.tab1
WHERE table1.val='xy'

相关问题