---
title: MERGE INTO SQL 执行结果错乱-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于MERGE INTO SQL 执行结果错乱相关的常见问题和使用技巧，帮助您快速解决MERGE INTO SQL 执行结果错乱的难题。
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# MERGE INTO SQL 执行结果错乱

更新时间：2026-05-28 02:06

适用版本： V2.2.x、V3.1.x、V3.2.x、V4.0.x、V4.1.x 内容类型：Troubleshoot  

## 问题现象

当 MERGE INTO 的 insert 子句放在 update 子句之前时，如果走 Plan Cache 会触发该问题。

示例如下。

```sql
MERGE INTO  lgj t using (select '15' C1  from dual) t1 on (t.C1 = t1.C1)
when not matched then
insert  (C1,C2,C3)values('15','lgj','22')
when matched then
update set t.C2='13',t.C3='15' where t.C1='15'

```

## 关键诊断信息

### 触发条件

当 MERGE INTO 的 insert 子句放在 update 子句之前时，如果走 Plan Cache。

## 问题原因

对于上面的 SQL：

- normal parser 解析序。

  ```sql
  15 (13 15 15)[not match caluse] (15 lgj 22)[match caluse]

  ```
 - faster parser 解析序。

  ```sql
  15 (15 lgj 22)[match caluse]  (13 15 15)[not match caluse]

  ```

应该是 parser 方面解析 MERGE INTO 子树有问题。

#### 说明

`fast parser` 应该没有错误，解析参数的顺序是正常序；通常 `normal parser` 将语句生成语法树，那么语法树会经过参数化的逻辑，在参数化的逻辑中，通过树的后序遍历提取出参数。那么这个问题的核心点在于：`normal parser` 生成的语法树时，子树的序发生了错乱（类似于左子树和右子树颠倒了），导致参数化后，提取出的参数的顺序不对。

## 问题的风险及影响

正确性问题。

## 影响租户

影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。

## 影响的版本

OceanBase 数据库 V2.2.77 GA（oceanbase-2.2.77-20210508211731）及之后版本、V3.1.2 GA（oceanbase-3.1.2-20210618150922）及之后版本、V3.2.3 GA（oceanbase-3.2.3.0-20220418212020）及之后版本、V3.2.4 GA（oceanbase-3.2.4.0-100000072022102819）及之后版本。

## 解决方法

升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库 V2.2.77 BP15（oceanbase-2.2.77-115000012023010607）及之后版本、V3.1.2 BP11（oceanbase-3.1.2-111000052023010412）及之后版本、V3.2.3 BP6 Hotfix4（oceanbase-3.2.3.3-106040022022122222）版本、V3.2.3 BP6 Hotfix5（oceanbase-3.2.3.3-106050012023051617）版本、V3.2.3 BP7（oceanbase-3.2.3.3-107000092023011911）及之后版本、V3.2.4 BP1（oceanbase-3.2.4.1-101000052023010822）及之后版本。

## 规避方式

可以先添加 Hint 禁用 Plan Cache 避过，`MERGE /*+use_plan_cache(none)*/ INTO t_pmarket_task_organ_info`。

上一篇

[current_timestamp 列插入 default 值出现正确性问题](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000100774)

下一篇

[sys 租户报错 ERROR 1235(0A000): uncertain plan voilating external consistency not supported](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000008215) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
