查询的字段可以不出现在group by后面的神奇问题

       今天测试发来了一段错误日志,主要错误信息如下:

        Cause: org.postgresql.util.PSQLException: ERROR: column "t.dept_level" must appear in the GROUP BY clause or be used in an aggregate function Position: 55

开发一般对这段报错不会陌生,就是有字段没出现在group by 后面,sql如下:

SELECT T.ID,
	T.NAME,
	T.is_hide,
	T.parent_id,
	T.sequ,
	T.dept_level,
	COUNT ( f.ID ),
	T.wechat_code dept_wechat_code,
	CAST ( 'dept' AS VARCHAR ( 10 ) ) AS TYPE 
FROM
	sys_department T 
	LEFT JOIN sys_department_r sdr ON sdr.pid = T.ID 
	LEFT JOIN sys_employee M ON M.dept_id = sdr.ID 
	LEFT JOIN sm_user f ON M.ID = f.ID 
	AND M.status != '0' 
	AND M.origin_type = '0' 
WHERE	T.status = '1' 
GROUP BY
	T.ID,
	T.NAME,
	T.is_hide,
	T.parent_id,
	T.sequ 
ORDER BY
	T.sequ,
	T.NAME

看了下,这段sql写的确实有问题,但是这段sql在项目中一直在使用,可以肯定的是  现网也在用,不是近期才加的sql,随机找了几个数据库都不报错(是的,不报错,正常的查出数据了,感觉很神奇,也让我自己很懵逼),但是有一个数据库执行的时候,却正常的报错了,就是开头贴的错误信息,没找到原因(初步怀疑,数据库版本不一致(已排除)或者使用的协议什么之内的不一致),写这篇博客,希望有经验的人帮忙解答一下,多谢!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值