我对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'
换句话说,我想为val
中的所有条目更改值table2
,其中table1
中的相应条目的值为'xy'。
不幸的是,这不起作用。有人可以给我提示吗?
答案 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'