tidb7.1.3 支持merge into的写法吗

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】tidb7.1.3
【复现路径】 是否有类似这样的写法:
merge into products p using newproducts np on (p.product_id = np.product_id)
when matched then
update set p.product_name = np.product_name
when not matched then
insert values(np.product_id, np.product_name, np.category)

【遇到的问题:问题现象及影响】 我调了一下代码貌似报错,所以咨询一下 各位大神,是否有这种写法

merge into 是什么玩法

还没有

用 insert on duplicate 或者 insert+update / replace 吧

这个不是标准SQL吧

没有,你们也是sqlserver吧,可以用 INSERT ON DUPLICATE KEY UPDATE 这个代替。
https://docs.pingcap.com/zh/tidb/stable/dev-guide-update-data#使用-insert-on-duplicate-key-update

:yum:sqlserver 的语法

merge into 不支持的

应该不支持的,merge into 是oracle语法

MERGE INTO 语句是一种 SQL 语句,用于将两个表的数据根据一定条件进行合并。如果源表中的数据在目标表中不存在,则可以将这些数据插入到目标表中;如果数据已存在,则可以根据需要进行更新或删除。这个语句在处理大量数据时非常有用,因为它可以减少多个单独的 INSERT、UPDATE 和 DELETE 语句的使用,从而提高性能。

以下是一些支持 MERGE INTO 语句的数据库系统:

  1. Oracle Database:Oracle 是最早支持 MERGE INTO 语句的数据库之一,它广泛用于数据仓库和复杂的数据处理场景。
  2. Microsoft SQL Server:自 SQL Server 2008 (10.0.x) 起,SQL Server 也支持 MERGE 语句,使其在处理复杂的数据同步和更新任务时更加高效。
  3. PostgreSQL:PostgreSQL 是一个功能强大的开源对象-关系数据库系统,从版本 8.4 开始支持 MERGE 语句(尽管它使用 ON CONFLICT 语法来实现类似的功能,这在功能上与 MERGE INTO 相似,但语法不同)。
  4. IBM Db2:IBM Db2 也支持 MERGE INTO 语句,允许用户执行复杂的数据合并操作。
  5. SQLite:虽然 SQLite 是一个轻量级的数据库,但它并不直接支持 MERGE INTO 语句。然而,你可以通过编写一系列的 INSERT、UPDATE 和 DELETE 语句或使用触发器来模拟这种行为。
  6. MySQL:直到 MySQL 8.0 之前,MySQL 并不直接支持 MERGE INTO 语句。但是,从 MySQL 8.0 开始,MySQL 引入了 INSERT ... ON DUPLICATE KEY UPDATE 语法,这允许在尝试插入重复键时更新记录,这在某种程度上类似于 MERGE INTO 的功能,但语法和用途有所不同。
  7. SAP HANA:SAP HANA 是一个高性能的内存数据库,它也支持 MERGE INTO 语句,用于高效的数据合并操作。
1 个赞

查了资料,有这些数据库支持,看到MySQL支持,后续支持Mysql的数据库应该会支持吧

:joy:我还以为只有sqlserver支持这个语法

tidb没有这个语法

不支持的

不支持哟

不支持,我们从DB2数据库迁移到TiDB,DB2那边原本有一些merge into语句,但是后面都是只能改造,比如改成replace into、insert into … on duplicate key update等等 。

收到,非常感谢

收到,谢谢

收到,谢谢 ,我测试一下

不支持