从另一个表中查找以更新特定列

时间:2013-09-05 13:03:58

标签: sql sql-server join

我已经在这方面苦苦挣扎了很长一段时间,似乎无法找到正确的陈述(即使在谷歌的帮助下!)

我想做的是......(我真的希望这是有道理的)

从table2中的value1查找table1中的value1(匹配) 然后从table2 value2更新table1中的value2,其中第一个值匹配

到目前为止,我有......

inner join table2 on table1.value1
inner join table2 on table1.value2

update table1

set value2=table2.value2
where value1=table2.value1

2 个答案:

答案 0 :(得分:1)

听起来这就是你所追求的:

update table1
  join table2
    on table1.value1 = table2.value1
set table1.value2 = table2.value2;

演示:http://sqlfiddle.com/#!2/8982d/1

更新

如果您正在使用SQL Server(我发现您在问题中也有该标记),那么您可能会收到“语法错误newar JOIN”错误消息。

那是因为在SQL Server中语法有点不同:

update table1
    set table1.value2 = table2.value2
from table1
join table2
  on table1.value1 = table2.value1

演示:http://sqlfiddle.com/#!3/4139c/1

答案 1 :(得分:1)

您希望在mysql中使用更新进行连接。语法是:

update table1 join
       table2
       on table1.value1 = table2.value1
    set table1.value2 = table2.value2;