kingbase兼容mysql group by特色语法
·
kingbase兼容mysql group by特色语法
sql标准不允许出现select列不在在group by列里,但是mysql老版本允许。
kingbase mysql模式下的数据库提供了参数可以配置是否兼容该特性
group by sql执行报错现象
test=# select relnamespace::regnamespace,relkind,count(*) from sys_class group by relkind;
ERROR: column "sys_class.relnamespace" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: select relnamespace::regnamespace,relkind,count(*) from sys_...
确认数据库模式
test=# show database_mode ;
database_mode
---------------
mysql
(1 row)
确认数据库参数
test=# show sql_mode ;
sql_mode
--------------------------------
ONLY_FULL_GROUP_BY,ANSI_QUOTES
(1 row)
调整参数解决
1.会话级设置
test=# set sql_mode='ANSI_QUOTES';
SET
test=# select relnamespace::regnamespace,relkind,count(*) from sys_class group by relkind;
relnamespace | relkind | count
--------------+---------+-------
pg_catalog | r | 118
pg_catalog | v | 443
pg_toast | i | 233
pg_toast | t | 49
sysmac | S | 3
2.全局设置
test=# show sql_mode ;
sql_mode
--------------------------------
ONLY_FULL_GROUP_BY,ANSI_QUOTES
(1 row)
test=# alter system set sql_mode='ANSI_QUOTES';
ALTER SYSTEM
test=# select sys_reload_conf();
sys_reload_conf
-----------------
t
(1 row)
test=# show sql_mode ;
sql_mode
-------------
ANSI_QUOTES
(1 row)
test=# select relnamespace::regnamespace,relkind,count(*) from sys_class group by relkind;
relnamespace | relkind | count
--------------+---------+-------
pg_catalog | r | 118
pg_catalog | v | 443
pg_toast | i | 233
pg_toast | t | 49
sysmac | S | 3
(5 rows)
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)