【问题标题】:Lookup from another table to update a specific column从另一个表中查找以更新特定列
【发布时间】:2013-09-05 13:03:58
【问题描述】:

我已经为此苦苦挣扎了很长一段时间,似乎找不到正确的说法(即使在谷歌的帮助下!)

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

从 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

【问题讨论】:

  • 暂时忽略 UPDATE 位。你能写一个返回所需结果的 SELECT 语句吗?
  • 我希望你在表格和列上的名字不是你显示的。
  • 查看decipherinfosys.wordpress.com/2007/01/31/… 的说明,也许其中一种方法也适用于 MySQL。

标签: sql sql-server join


【解决方案1】:

你想在 mysql 中加入一个更新。语法是:

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

【讨论】:

  • 谢谢。实际起作用的是 update table1 set table1.value2 = table2.value2 from table1 inner join table2 on table1.value1 = table2.value1 感谢所有帮助
【解决方案2】:

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

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

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

更新:

如果您使用的是 SQL Server(我看到您在问题中也有该标记),那么您收到 "syntax error 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

【讨论】:

  • 由于某种原因它不喜欢加入这个词
  • @JonJBBarlow 你在用 MySQL 吗?这是一个使用 MySQL 5 的在线演示:sqlfiddle.com/#!2/8982d/1 表明它可以正常工作
  • @JonJBBarlow 如果您使用的是 SQL Server,请查看我的答案的更新
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-03
相关资源
最近更新 更多