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

D. *_*der 1 mysql sql syntax join sql-update

我有一个关于MySQL中"更新"的问题.我有两张桌子table1并且table2已连接table1.id=table2.tab1.现在,我想table2根据值中的值更新值table1.我试图像这样做:

UPDATE table2 SET table2.val='new value' 
WHERE table1.id=table2.tab1 AND table1.val='xy' 
Run Code Online (Sandbox Code Playgroud)

换句话说,我想更改相应条目的值为'xy'的val所有条目的值.table2table1

不幸的是,这不起作用.有人能给我一个暗示吗?

Max*_*rov 5

您应该使用UPDATE + JOIN语句

UPDATE table2 
JOIN table1 ON table1.id=table2.tab1 
SET table2.val='new value' 
WHERE table1.val='xy' 
Run Code Online (Sandbox Code Playgroud)

或子查询

UPDATE table2
SET table2.val='new value' 
WHERE table2.tab1 IN (
    SELECT id
    FROM table1
    WHERE table1.val='xy'
)
Run Code Online (Sandbox Code Playgroud)