---
title: 带有 rand 函数的 limit 语句结果错误-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于带有 rand 函数的 limit 语句结果错误相关的常见问题和使用技巧，帮助您快速解决带有 rand 函数的 limit 语句结果错误的难题。
---
切换语言

- 简体中文
- English

划线反馈

# 带有 rand 函数的 limit 语句结果错误

更新时间：2026-05-19 08:21

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

## 问题现象

多表连接，在过滤条件中存在 `rand()` 函数，且查询中存在 `limit` 限制，不管多表连接的中间结果有多少，查询出来的结果明显少于 `limit` 行数。

示例查询语句如下。

```sql
select
  t1.c2,
  t2.c2
from
  t1
  LEFT JOIN t2 on t1.c1 = t2.c1
where
  cast(RAND() * 50 as signed) = 1
limit
  100;

```

## 问题原因

由于触发了 limit push down 的改写，导致多表连接的中间结果被限制为 `limit` 行数，最终留给 `rand()` 条件的过滤行数变少，查询出来的结果明显少于`limit` 行数。

## 问题的风险及影响

导致业务查询出来的行数明显低于预期行数。

## 影响版本

OceanBase 数据库 V4.1.0 BP2（oceanbase-4.1.0.1-102000042023061309）、V3.2.3 BP9（oceanbase-3.2.3.3-109000182023071410）、V3.2.4 BP5（oceanbase-3.2.4.5-105000012023081513）及之前的 BP 版本。

## 解决方法及规避方式

- 使用 `NO_PUSH_LIMIT` 这个 hint 来禁用这个改写。
 - 升级到问题已修复版本，目前已修复的版本包含 V4.1.0 BP3（oceanbase-4.1.0.2-103000072023081111）、V3.2.3 BP10（oceanbase-3.2.3.3-110000092023091219）、V3.2.4 BP6（oceanbase-3.2.4.6-106000052023102710）及之后版本。

Previous

[concat_ws 函数报错 result of string concatenation is too long](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000466052)

Next

[NULLIF 函数比较两个空字符串报错](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000444252) ![有帮助](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) 咨询热线
