【问题标题】:Is merge statement available in MySQL合并语句在 MySQL 中可用吗
【发布时间】:2017-07-28 12:48:05
【问题描述】:

我必须在单个查询中使用 INSERTUPDATE。对于具有 MERGE 语句的 SQL。

MySQL 是否支持 MERGE 语句。如果支持,请提供样品。

【问题讨论】:

  • MySQL 支持使用 INSERT ... ON DUPLICATE KEY UPDATE 语法[2] 可以用来达到类似的效果,但目标和源之间的连接只能在PRIMARY KEY 或 UNIQUE 约束,在 ANSI/ISO 标准中不需要。它还支持 REPLACE INTO 语法,[3] 首先尝试插入,如果失败,则删除该行(如果存在),然后插入新行。
  • 没有主键或唯一键是否可以继续?

标签: mysql sql


【解决方案1】:

MERGE 不受 MySQL 支持,但是,还有其他可能的方法:

INSERT...ON DUPLICATE KEY UPDATE

如果您在 INSERT 中指定 ON DUPLICATE KEY UPDATE 选项 语句和新行导致 UNIQUE 中的重复值或 PRIMARY KEY索引,MySQL根据旧行更新 新的价值观。

【讨论】:

  • 感谢您的回复。是否可以在该语句中添加 where 条件。请提供带有 WHERE 条件的示例。
  • 不,在这种情况下,您不能在查询的更新部分使用 WHERE 条件。或者,您可以使用 IF 语句。
  • 值得注意的是,这并不能完成合并所做的所有事情 - 例如,如果您有一条应该删除的记录,则没有 WHEN NOT MATCHED BY TARGET DELETE;
  • 如果您知道确切的答案,请您给出一个显示完整命令的正确答案吗?
  • 这种写法似乎暗示了UPDATE关键字后的重复值不是必需的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-18
  • 2010-12-11
  • 2020-11-09
  • 1970-01-01
  • 2013-07-31
相关资源
最近更新 更多