iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >达梦数据库SQL查询报错不是 GROUP BY 表达式解决方法
  • 249
分享到

达梦数据库SQL查询报错不是 GROUP BY 表达式解决方法

数据库sqlmysql 2023-08-30 14:08:46 249人浏览 泡泡鱼
摘要

达梦数据库sql查询报错:不是 GROUP BY 表达式解决方法 1、前言 随着达梦数据库国产化率越来越高,很多如oracle、Mysql、SQL Server逐步迁移到达梦数据库上来,但难免会有一些其它数据库独有的用法在达梦上会报错,但达

达梦数据库sql查询报错:不是 GROUP BY 表达式解决方法

1、前言

随着达梦数据库国产化率越来越高,很多如oracleMysqlSQL Server逐步迁移到达梦数据库上来,但难免会有一些其它数据库独有的用法在达梦上会报错,但达梦数据库其实都有相应的解决办法,接下来我们来看一个比较常见的错误,以及如何处理,本文都会详细介绍。

2、问题描述

报错信息:-4080: 第1 行附近出现错误:不是 GROUP BY 表达式

在这里插入图片描述

**相信大家对这个错误一定不陌生。为何有此报错?达梦数据如何解决呢?下面我们来一探究竟**

3、达梦解决办法

3.1 复现报错

--咋们可以利用达梦数据库内置的员工表测试select e.department_id,e.employee_name,sum(e.salary) from dmhr.employee e group by e.department_id;---------报错信息---------------总共1个语句正依次执行...[执行语句1]:select e.department_id,e.employee_name,sum(e.salary) from dmhr.employee e group by e.department_id;执行失败(语句1)-4080:1 行附近出现错误:不是 GROUP BY 表达式1条语句执行失败

3.2 解决办法1:

##达梦支持灵活的处理方式,可以直接在查询中加hint参数。select  e.department_id,e.employee_name,sum(e.salary) from dmhr.employee e group by e.department_id;101马学铭72424102程擎武21592103郑吉群129443104陈仙75945105金纬194399201李慧军45299202常鹏程20491204谢俊人81014301苏国华112344..............

在这里插入图片描述

3.3 解决办法2:

##也可以修改dm.ini参数GROUP_OPT_FLAG=1,动态,会话级参数,不用重启数据库。select para_name,para_value,file_value from v$dm_ini where para_name='GROUP_OPT_FLAG';##sp_set_para_value(1,'GROUP_OPT_FLAG',1);select e.department_id,e.employee_name,sum(e.salary) from dmhr.employee e group by e.department_id;101马学铭72424102程擎武21592103郑吉群129443104陈仙75945105金纬194399201李慧军45299202常鹏程20491204谢俊人81014301苏国华112344...............

在这里插入图片描述

3.4 解决办法3:

达梦还可以配置兼容参数,COMPATIBLE_MODE=4,静态参数,需要重启数据库后生效!sp_set_para_value(2,'COMPATIBLE_MODE',4);select para_name,para_value,file_value from v$dm_ini where para_name='COMPATIBLE_MODE';!!注意修改后需要重启数据库!!select e.department_id,e.employee_name,sum(e.salary) from dmhr.employee e group by e.department_id;101马学铭72424102程擎武21592103郑吉群129443104陈仙75945105金纬194399201李慧军45299202常鹏程20491204谢俊人81014301苏国华112344...............

在这里插入图片描述

COMPATIBLE_MODE参数解释: 0: 不兼容 1:兼容 SQL92 标准 2: 部分兼容 ORACLE 3: 部分兼容 MS SQL SERVER 4: 部分兼容 mysql5:兼容 DM66: 部分兼容 TERADATA

4、GROUP BY注意事项

使用 GROUP BY 要注意以下问题:1.在 GROUP BY 子句中的每一列必须明确地命名属于在 FROM 子句中命名的表的一列。分组列的数据类型不能是多媒体数据类型;2.分组列不能为集函数表达式或者在 SELECT 子句中定义的别名;3.当分组列值包含空值时,则空值作为一个独立组;4.当分组列包含多个列名时,则按照 GROUP BY 子句中列出现的顺序进行分组;5. GROUP BY 子句中至多可包含 255 个分组列; 6. ROLLUP\CUBE\GROUPING SETS 组合不能超过 9 个。

达梦技术社区:https://eco.dameng.com

来源地址:https://blog.csdn.net/qq_37898570/article/details/126951104

--结束END--

本文标题: 达梦数据库SQL查询报错不是 GROUP BY 表达式解决方法

本文链接: https://www.lsjlt.com/news/383074.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作