KingbaseES数据库MySQL模式使用 “GROUP BY“

报错信息:

ERROR: column "xxxx" must appearin the GROUP BY clause or be used in an aggregate function

问题描述:

KES数据库group by 操作与mysql 结果不同。

分析与解决方法:

MySQL 的group by : MySQL支持select list中非聚集列可以不出现在group by中。sql标准是必须出现在group by中, 如:select col1, col2 from tab group by col1;

kingbase为兼容mysql,设置了个sql_mode参数,其默认包含ONLY_FULL_GROUP_BY选项。 如果sql_mode中不包含ONLY_FULL_GROUP_BY,group by语句可以不符合sql标准,也就是与mysql结果相同。

复制代码
test=# create table t1(id1 integer, id2 integer, val integer);
CREATE TABLE
test=# show sql_mode;
            sql_mode
--------------------------------
 ONLY_FULL_GROUP_BY,ANSI_QUOTES
(1 row)

test=# select id1, id2, count(*) from t1 group by id1;
ERROR:  column "t1.id2" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: select id1, id2, count(*) from t1 group by id1;
                    ^
test=# set sql_mode = '';
SET
test=# select id1, id2, count(*) from t1 group by id1;
 id1 | id2 | count
-----+-----+-------
(0 rows)

使用双引号做界定符

问题描述:

MySQL数据库模式使用双引号做界定符报语法错误。

分析与解决方法:

需要设置GUC参数sql_mode,使其包括ANSI_QUOTES,就可以兼容双引号。例如:

set sql_mode = ANSI_QUOTES;

不设置ANSI_QUOTES时,mysql可以使用双引号来引用字符串常量。而设置ANSI_QUOTES后, 双引号内的内容不再是字符串,而是mysql的标识符(如表名、字段名)。 这是mysql 值的 说明,定制版支持这个参数值就需要按规则使用 (V008R006C008B0020版本及以后支持 ANSI_QUOTES

相关推荐
Database_Cool_1 小时前
阿里云 RDS MySQL 降本增效实战:从规格选型到成本优化,月成本降低64%全攻略
mysql·阿里云·云计算
java_logo1 小时前
Apache Doris Docker 部署指南:实时分析数据库实战
数据库·docker·apache·doris·apache doris·轩辕镜像·docker部署doris
广州灵眸科技有限公司9 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
Cloud云卷云舒11 小时前
云卷云舒:从Oracle/MySQL迁移到HaishanDB:迁移评估工具核心技术拆解
mysql·oracle·ai-native·haishandb·信创数据库替换
憧憬成为web高手11 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学11 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
oradh13 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
用户713335851562414 小时前
MySQL - 事务、redo/undo 日志与 MVCC
mysql
z1234567898614 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD14 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关