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

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

划线反馈

# SQL 执行结果集重复

更新时间：2026-05-29 08:46

内容类型：Troubleshoot  

## 问题现象

c1,c2,c3 是索引列，当出现如下形式的表达式时，会出现结果集重复。

```shell
(c1 = x or c1 = ...) and c2 in (...) and c3 ...

```

## 关键诊断信息

### 触发条件

c1,c2,c3 是索引列，表达式具有以下形式。

```

## 问题原因

举例：对于表达式 `(c1 = 1 or c1 = 2) and c2 in (3,4) and c3 > 1` 时，预期生成的 `range` 为 `range(1,3,1;1,3,MAX),(1,4,1;1,4,MAX),(2,3,1;2,3,MAX),(2,4,1;2,4,MAX)`。 但是在遍历到 `c1 = 2` 的时候，对 `range graph` 的状态未设置正确，导致在为 `c1=2` 时的 `range` 出错，变成了 `range(1,3,1;1,3,MAX),(1,4,1;1,4,MAX),(1,3,1;2,3,MAX),(1,4,1;2,4,MAX)`。这个错误的 `range` 会导致执行的结果集出现重复。

## 问题的风险及影响

SQL 执行出现正确性问题。

## 影响租户

影响 OceanBase 数据库中的 Oracle 租户和 MySQL 租户，对于 SYS 租户无影响。

## 影响的版本

OceanBase 数据库企业版 V3.2.3 GA（oceanbase-3.2.3.0-20220419）及之后版本、V3.2.4 GA（oceanbase-3.2.4.0-100000072022102819）及之后版本、V4.1.0 GA（oceanbase-4.1.0.0-100001122023040322）及之后版本。

## 解决方法

升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库企业版 V3.2.3 BP8（oceanbase-3.2.3.3-108000062023041511）及之后版本、V3.2.4 BP3（oceanbase-3.2.4.3-103000032023041816）及之后版本、V4.1.0 BP1（oceanbase-4.1.0.0-101000052023050621）及之后版本。

## 规避方式

- 改索引，将 c2 或 c3 列从索引中移除。
 - 改 SQL，将 `c2 in (..)` 改为等价的 or 表达式。
 - 使用 `hint` 走主表（不推荐）。

上一篇

[SQL 报错时区无法解析](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000210014)

下一篇

[SQL 执行报错 -4206，hash map/set full](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000209979) ![有帮助](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) 咨询热线
