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

时间:2018-11-29 08:31:40

标签: mysql sql join syntax sql-update

我对MySQL中的“更新”有疑问。我有两个表table1table2已连接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'。

不幸的是,这不起作用。有人可以给我提示吗?

5 个答案:

答案 0 :(得分:5)

您应该使用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'
)

答案 1 :(得分:2)

这不是正确的语法。您应该使用update-join

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

答案 2 :(得分:2)

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

答案 3 :(得分:2)

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

答案 4 :(得分:1)

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