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

②、error大全 专栏收录该内容
22 篇文章 0 订阅

一、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
错误原因:#{}预编译语句 -> ?作占位符 最后会被解析成 '你传过来的值' ,但是在这里它并没有给我们解析出来!!!
为什么呢?

小编猜测可能是数据类型的原因,即数字类型通过#{}传递过来将不会带上''单引号,只有字符串类型才会自动解析带上~

解决:换用${}原样输出结果 即可
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 后面不能使用别名!
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 点我我会动 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值