【问题标题】:Update with join that will work on both MySQL and SQL Server使用适用于 MySQL 和 SQL Server 的连接进行更新
【发布时间】:2021-06-07 20:34:55
【问题描述】:

我需要这个更新/加入查询才能在 MySQL 和 SQL Server 上工作。我似乎无法弄清楚。我不确定这是否可能。这是它的样子

update table1 a
inner join table2 b on a.id = b.id
set a.name = b.name

谁能帮我改变它,让它在 MySQL 和 SQL Sserver 上都可以工作?谢谢!

【问题讨论】:

  • 通常,当您的代码必须在多个数据库上运行时,最好为每个数据库编写专门的查询,使用每个特定的功能和语法。
  • 为什么我的帖子得到了-1?

标签: mysql sql sql-server join


【解决方案1】:

使用相关子查询而不是join

update table1 a
    set a.name = (select b.name from table2 b where a.id = b.id)
    where exists (select 1 from table2 b where a.id = b.id);

如果您知道两个表中的 id 匹配,则不需要外部 where 子句。

【讨论】:

  • 这项工作。但是,我想知道是否还有其他方法?原因是我使用的 MySQL 版本太旧,我不能在括号内使用“select”
  • @user15364266 。 . .当然可以。唯一的限制是这两个表必须不同。但这是唯一可以在 MySQL 和 SQL Server 中使用的版本。
【解决方案2】:

在 Oracle 中你可以编写以下查询,我不确定它是否也适用于 MySQL 和 SQL Server:

update (select a.name n1, b.name n2
          from table1 a join table2 b on a.id = b.id)
   set n1 = n2

【讨论】:

  • 当您不确定答案是否正确时,为什么要发布答案???
猜你喜欢
  • 2014-12-29
  • 1970-01-01
  • 1970-01-01
  • 2018-12-27
  • 1970-01-01
  • 2021-08-06
  • 2016-03-10
  • 2016-03-01
  • 2017-03-04
相关资源
最近更新 更多