看看这个sql为什么执行失败了

【 使用环境 】 测试环境
OceanBase 4.3.5.3


为什么这个执行失败了,我都切换了模式,也重新开过会话了

16 个赞

看看你的存储过程,看提示是select后面出现了不少group by的列吧

1 个赞

sql_mode,不是已经改了删除了ONLY_FULL_GROUP_BY

新建文本文档 (4)(1).txt (15.8 KB)

1 个赞

不好意思,我对存储过程也不熟悉。试了下你的脚本,好像有问题,执行不了。

2 个赞

学习了

没有表应该执行不了吧,主要是这个存储过程在低版本可以用,在我提供的版本数据库版本有不可以,是不是还是什么没有配置。测试了一些group by sql也可以执行的

2 个赞

这个问题不太明白,跟各位大佬学习了。

1 个赞

参考下文档 :
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000006618301

CREATE TABLE tbl1(name VARCHAR(20), city VARCHAR(50), age INT);
INSERT INTO tbl1 VALUES (‘Alex’,‘BeiJing’,20), (‘Alex’,‘Shanghai’,25);

– 禁用 ONLY_FULL_GROUP_BY:能执行,city 可能是 BeiJing 或 Shanghai(不确定)
SELECT name, city, MAX(age) FROM tbl1 GROUP BY name;

– 启用 ONLY_FULL_GROUP_BY:报错
– 正确写法 1:GROUP BY 包含 city
SELECT name, city, MAX(age) FROM tbl1 GROUP BY name, city;

– 正确写法 2:显式接受不确定值
SELECT name, ANY_VALUE(city), MAX(age) FROM tbl1 GROUP BY name;

** 禁用 ONLY_FULL_GROUP_BY 的作用

更宽松,允许 SELECT 中出现未出现在 GROUP BY 中的非聚合列。

** 启用 ONLY_FULL_GROUP_BY 的作用

更严格、更符合 SQL 标准,避免“每组返回哪一行数据”的不确定性。

1 个赞

有点没看懂,首先现在的环境已经去掉ONLY_FULL_GROUP_BY。调整成为了STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER。结果执行不了。报上图的错误
。但是在我另外严格低版本环境4.2.3.5上面是可以执行的。你们版本变化是不是改了什么

1 个赞

后来找到原因了吗

1 个赞

蹲蹲

1 个赞

没有遇到过

非常有深度的一篇好文,点赞支持。

很好

支持

66666666666

1 个赞

厉害了

1 个赞

支持

1 个赞