【MyBatis中报错】ORA-00979: 不是 GROUP BY 表达式

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_38225558/article/details/99551813

一、MyBatis中连接oracle按日月年统计写sql时遇到如下错误:

Caused by: java.sql.SQLSyntaxErrorException: ORA-00979: 不是 GROUP BY 表达式
在这里插入图片描述

二、解决办法:

我的sql中是如下导致报错

SELECT
        to_char(DATE, #{dateFormat}) as time,
        round(avg(A), 2) a,
        max(DATE) dateRecv
        FROM
            T_表名
WHERE 1=1
<if test="date!=null and date!=''">
    and to_char(DATE, #{dateFormat}) LIKE '%${date}%'
</if>
GROUP BY to_char(DATE, #{dateFormat})
ORDER BY time NULLS LAST
错误原因:#{}预编译语句 -> ?作占位符 最后会被解析成 '你传过来的值' ,但是在这里它并没有给我们解析出来!!!

为什么呢? 在sql中#是注释!!!

让小编将sql拷贝到Navicat中给你们看看吧,#后面的sql变灰了…
在这里插入图片描述

解决:换用${}原样输出结果 即可
SELECT
        to_char(DATE, '${dateFormat}') as time,
        round(avg(A), 2) a,
        max(DATE) dateRecv
        FROM
            T_表名
WHERE 1=1
<if test="date!=null and date!=''">
    and to_char(DATE, '${dateFormat}') LIKE '%${date}%'
</if>
GROUP BY to_char(DATE_AQI, '${dateGroup}')
ORDER BY time NULLS LAST
最后温馨小提示:GROUP BY 后面不能使用别名!

猜你喜欢

转载自blog.csdn.net/qq_38225558/article/details/99551813