在进行group by 分组时希望select 里面的列可以不在分组列中

Viewed 20

SELECT code,sno
from synch.hip_org ho
group by code order by sno 希望像mysql一样,select 里面的列,order by 里面的列不一定要在分组列中,
参照mysql 改了sql_mode 参数,改了还是不得行。
sql_mode 参数如下:
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

1 Answers

在 SQL 语法规范(如 SQL 标准 )里,严格模式下,SELECT 子句中出现的列(除聚合函数使用的列 ),必须在 GROUP BY 子句中出现 ,但 MySQL 有特殊处理。

从理论和 SQL 标准设计角度看,GROUP BY 是按照指定列对数据分组,分组后要确定 SELECT 展示哪些列。若列没在 GROUP BY 里且不是聚合结果(如 SUM/AVG 等 ),数据库无法确定取分组内哪条记录的该列值,会产生歧义,所以要求这类列必须出现在 GROUP BY 中。