今天测试发来了一段错误日志,主要错误信息如下:
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,随机找了几个数据库都不报错(是的,不报错,正常的查出数据了,感觉很神奇,也让我自己很懵逼),但是有一个数据库执行的时候,却正常的报错了,就是开头贴的错误信息,没找到原因(初步怀疑,数据库版本不一致(已排除)或者使用的协议什么之内的不一致),写这篇博客,希望有经验的人帮忙解答一下,多谢!!!