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

一、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变灰了…
【MyBatis中报错】ORA-00979: 不是 GROUP BY 表达式_第1张图片

解决:换用${}原样输出结果 即可
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 后面不能使用别名!

你可能感兴趣的:(-----,-----②,error大全)