相关推荐recommended
达梦中sql使用group by 命令报错不是GROUP BY 表达式
作者:mmseoamin日期:2024-04-27

执行sql时报错如下:

达梦中sql使用group by 命令报错不是GROUP BY 表达式,第1张

有三种解决方法:

1.直接在查询中添加参数:/*+GROUP_OPT_FLAG(1)*/

    select /*+GROUP_OPT_FLAG(1)*/* from DMHR.CITY GROUP BY CITY_NAME;

2.修改dm.ini参数GROUP_OPT_FLAG=1,使用sysdba用户修改,该参数属于动态会话级参数,不用重启数据库。但是需要注意该参数有默认值,先查下默认值是什么,然后再+1赋值。也可以直接执行命令:

   sp_set_para_value(1,'GROUP_OPT_FLAG',1);

   select para_name,para_value from v$dm_ini where para_name='GROUP_OPT_FLAG';

 

3.配置兼容参数COMPATIBLE_MODE=4,兼容mysql,该参数属于静态参数,需要重启数据库生效。

  sp_set_para_value(1,'COMPATIBLE_MODE',4);   

  select para_name,para_value from v$dm_ini where para_name='COMPATIBLE_MODE';

 

备注:

 COMPATIBLE_MODE

 0:不兼容

 1:兼容sql92标准

 2:部分兼容oracle

 3:部分兼容sql server

 4:部分兼容mysql

 5.兼容dm6

 
 注意:

 如果修改参数COMPATIBLE_MODE 的话需要重启数据库才能生效,

不然就只调整 sp_set_para_value(1,'GROUP_OPT_FLAG',1);  就行,该参数针对新的会话生效,如果要对当前会话生效的话,可以执行以下过程,让已存在的会话也生效。

    begin

       for i in (select sess_id ssid, sess_seq sseq from v$sessions ) 

    loop

       SP_SET_PARAM_IN_SESSION(i.ssid, i.sseq,  'GROUP_OPT_FLAG', 1);

    end loop;  

    end;

达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台