---
title: 业务 SQL 子查询包含相同的列名，PS 执行报错 field list ambiguously defined-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于业务 SQL 子查询包含相同的列名，PS 执行报错 field list ambiguously defined相关的常见问题和使用技巧，帮助您快速解决业务 SQL 子查询包含相同的列名，PS 执行报错 field list ambiguously defined的难题。
---
切换语言

- 简体中文
- English

划线反馈

# 业务 SQL 子查询包含相同的列名，PS 执行报错 field list ambiguously defined

更新时间：2026-05-26 09:46

适用版本： V3.2.x 内容类型：Troubleshoot  

## 问题现象

业务 SQL 子查询包含相同的列名，PS 执行报错 `field list ambiguously defined` 示例如下所示：

```sql
select T.* from (select to_date(?, 'YYYY-MM-DD' hh24:mi:ss), to_date(?, 'YYYY-MM-DD' hh24:mi:ss) from dual) T

```

## 关键诊断信息

### 触发条件

SQL 子查询包含相同的列名；PS 执行。

## 问题原因

Oracle PS 模式下存在相同列名也会报错，但是 Oracle 对 `?` 生成列名的方式跟 OceanBase 不一样。

- Oracle: `select ?, ? from dual;` select_item 的列名是 `:1, :2`。
 - OceanBase：`select ?, ? from dual;` params: 1, 1 OceanBase 是用实际的值生成列名，所以列名是 `1, 1`。

## 问题的风险及影响

SQL 子查询包含相同的列名，执行报错 `field list ambiguously defined`。

## 影响租户

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

## 影响版本

V3.2.3 GA（oceanbase-3.2.3.0-20220418212020）及之后版本。

## 解决方法

升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库 V3.2.3 BP6 Hotfix1（oceanbase-3.2.3.3-106010052022120116）、V3.2.3 BP6 Hotfix2（oceanbase-3.2.3.3-106020042022120915）、V3.2.3 BP6 Hotfix3（oceanbase-3.2.3.3-106030012022121311）、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）。

## 规避方式

- 子查询中存在相同列名，应该分别给列取别名。
 - 给子查询中相同列取不同的别名可以绕过。

Previous

[update set 子查询中常量导致 pdml update 更新错误](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000089876)

Next

[层次查询由于参数值不同，报错-4017](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000048158) ![有帮助](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) 咨询热线
