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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值