精华内容
下载资源
问答
  • mybatis group by substr函数传参报错

    千次阅读 2018-12-01 15:52:31
    ### Cause: java.sql.SQLSyntaxErrorException: ORA-00979: 不是 GROUP BY 表达式 SELECT SUBSTR( region_code, 1,#{ queryMap.groupCodeLength, jdbcType = INTEGER } ) AS "region_code", count( ...

    报异常:

    ### Cause: java.sql.SQLSyntaxErrorException: ORA-00979: 不是 GROUP BY 表达式

    SELECT
    	SUBSTR( region_code, 1,#{ queryMap.groupCodeLength, jdbcType = INTEGER } ) AS "region_code",
    	count( CASE WHEN TYPE = 1 THEN 0 END ) AS "like",
    	count( CASE WHEN TYPE = 2 THEN 0 END ) AS "roast" 
    FROM
    	t_pub_sentiment 
    WHERE
    	1 = 1 
    GROUP BY
    	SUBSTR(region_code,1,#{ queryMap.groupCodeLength,jdbcType = INTEGER })

    更改后:

    SELECT
    	SUBSTR( region_code, 1, $ { queryMap.groupCodeLength } ) AS "region_code",
    	count( CASE WHEN TYPE = 1 THEN 0 END ) AS "like",
    	count( CASE WHEN TYPE = 2 THEN 0 END ) AS "roast" 
    FROM
    	t_pub_sentiment 
    WHERE
    	1 = 1 
    GROUP BY
    	SUBSTR( region_code, 1, $ { queryMap.groupCodeLength } )

    原因:#{} 和 ${} 在预编译中的处理是不一样的。#{} 在预处理时,会把参数部分用一个占位符 ? 代替。而 ${} 则只是简单的字符串替换。 ${}有sql注入的风险,需谨慎使用。

    展开全文
  • group by查询后汇总行数 select count(*) from (select distinct e.id from e left join a on e.id=a.e_id where 1=1 and org_cd=#{orgCd}) child distinct e.id 改为 count(distinct e.id)也可以画蛇添足,后来...

    group by查询后汇总行数 select count(*) from (select distinct e.id from e left join a on e.id=a.e_id where 1=1 and org_cd=#{orgCd}) child

    distinct e.id 改为 count(distinct e.id)也可以画蛇添足,后来全部删掉手写一遍解决

    1.检查sql语句,最好的检查方法就是将sql语句复制到查询器中执行一遍。 (在navacat中执行正常)
    2.检查Mapper接口,参数名一定要对上!!! (如果错误应该包bind error)
    3.检查字段是否出现sql关键字!(比如call),这个很重要,因为call在java中并不是关键字,但是在sql中是关键字! (没有sql关键字可能类似的是child)
    4.写完后一定要记得commit()
     

    展开全文
  • select **C.ITEM_NAME**, **Y.PLAN_YEAR**, SUM(X.GAS_CONS_SCALE)GAS_CONS_SCALE, SUM(X.CY_DRILL_NUM)CY_DRILL_NUM...SUM(X.BY_DRILL_NUM)BY_DRILL_NUM, SUM(X.CY_END_DRILL_NUM)CY_END_DRILL_NUM, SUM(X.BY_END_D...
    select **C.ITEM_NAME**,
    **Y.PLAN_YEAR**,
    SUM(X.GAS_CONS_SCALE)GAS_CONS_SCALE,
    SUM(X.CY_DRILL_NUM)CY_DRILL_NUM ,
    SUM(X.BY_DRILL_NUM)BY_DRILL_NUM,
    SUM(X.CY_END_DRILL_NUM)CY_END_DRILL_NUM,
    SUM(X.BY_END_DRILL_NUM)BY_END_DRILL_NUM,
    SUM(X.CY_FOOTAGE)CY_FOOTAGE,
    SUM(X.BY_FOOTAGE)BY_FOOTAGE,
    SUM(X.CY_END_TEST_OIL)CY_END_TEST_OIL,
    SUM(X.BY_END_TEST_OIL)BY_END_TEST_OIL,
    SUM(X.CY_INDUSTRY_WELL)CY_INDUSTRY_WELL,
    SUM(X.BY_INDUSTRY_WELL)BY_INDUSTRY_WELL,
     X.REMARKS
     from PRODUCTION.CD_ITEM C
    LEFT JOIN PRODUCTION.PC_PLAN_ITEM M ON C.ITEM_ID=M.ITEM_ID
    LEFT JOIN PRODUCTION.PC_YEAR_PLAN Y ON Y.YEAR_PLAN_ID=M.YEAR_PLAN_ID
    LEFT JOIN PRODUCTION.PC_PRODUCTIVITY_PLAN_INDEX X ON X.ITEM_ID=C.ITEM_ID
    WHERE C.ITEM_CLASS='2008' AND Y.PLAN_TYPE='2'
        <if test="planYear !=null and planYear !=''">
            AND PLAN_YEAR=#{planYear,jdbcType=VARCHAR}
        </if>
        GROUP BY **C.ITEM_NAME**,C.ITEM_YEAR,**Y.PLAN_YEAR**,X.REMARKS ORDER BY C.ITEM_NAME
    

    但凡Oracle 中有 group by 则在 所出现字段必须全部出现在group by 后面(除聚合函数外sum,avg等),注意

    展开全文
  • 写了几百遍的group by,居然查询出来只有一条数据, 但是把执行语句放入mysql中执行又没问题 找了返回值的问题也没事 group by 参数,这样的组合遇到的坑 错误的语句如下 SELECT * FROM tb_equip_archives...

    现象:

    写了几百遍的group by,居然查询出来只有一条数据,

    但是把执行语句放入mysql中执行又没问题

    找了返回值的问题也没事

     

    group by 参数,这样的组合遇到的坑

    错误的语句如下

      SELECT *  FROM tb_equip_archives  group by #{colum}

     

    正确的语句如下

      SELECT *  FROM tb_equip_archives  group by ${colum}

     

    看到这里就明白了吧

     

    #{}防止sql注入攻击,自动在参数外面加了一个单引号

    实际执行语句为

      SELECT *  FROM tb_equip_archives  group by ‘id’

     

    道理我都懂,怎么这里就忘了呢

     

     

    展开全文
  • mybatis group by查询返回map类型

    千次阅读 2017-06-12 21:11:00
    故事的发生是这样的....额e,可是为嘛不使用简单便捷的 group by 语句呢 我们知道MyBatis提供了selectMap的方法,查询结果为hashmap。查询的时候,可以配置相应的传入参数和查询返回结果。 对应dao ...
  • 报错信息:......not in GROUP BY clause and contains nonaggregated column ...... which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_...
  • 一、MyBatis中连接oracle按...Caused by: java.sql.SQLSyntaxErrorException: ORA-00979: 不是 GROUP BY 表达式 二、解决办法: 我的sql中是如下导致报错 SELECT to_char(DATE, #{dateFormat}) as time, round(a...
  • mybatisgroup by有关的bug 连表查询中,attr_id和attr_name是一一对应的关系 #Condition1:GROUP BY pssav.`attr_id` SELECT pssav.`attr_id`,pssav.`attr_name`,GROUP_CONCAT(DISTINCT pssav.`attr_value`) FROM ...
  • <if test="orderByClause != null and !(orderByClause.indexOf(';')>=0) and !(orderByClause.indexOf('\'')>=0)" > ORDER BY ${orderByClause} </if>
  • 使用group by分组查询,将查询结果封装成类3.group by分组查询,将结果封装为map。直接封装为map?List1. 最简单但性能最差的做法 在逻辑层分多次对数据库进行查询。伪代码如下。 List<String> nameList ; ...
  • mybatis使用函数 再group by 传参报错

    千次阅读 2018-09-07 16:31:19
    ### Cause: java.sql.SQLSyntaxErrorException: ORA-00979: 不是 GROUP BY 表达式 ; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: ORA-00979: 不是 GROUP BY 表达式 错误配置: ...
  • mybatis使用group by 分组查询返回为null

    千次阅读 2020-01-09 09:44:33
    博主在使用mybatis进行分组查询时数据库有数据,但是mybatis返回为null,使用mybatis版本为3.4.1 解决方法时在resultMap的result标签中添加 property属性 如下: ```java <resultMap id="deptMap" type=...
  • select b.data_type,b.field_id,count(1) num from BSINERR b GROUP BY b.field_id,b.data_type; 结果为: 2、mybatis的mappe: <select id="countByFieldId" resultMap="byFiledId"> ...
  • 那么加上group by返回不止一条数据怎么办? 首先还是返回Integer数值型 <select id="queryJobOrient" resultType="Integer"> SELECT COUNT(*) FROM internshipinfo <where> <if test="gradeId != ...
  • mybatis使用group by返回sum,count数据

    万次阅读 2016-03-08 10:12:04
    对于这样的带有group by的语句,可以自定义返回类型  select sum(transAmt),count(*), respCode from transdetail where batchNo = #{batchNo,jdbcType=VARCHAR} GROUP BY respCode
  • [b]在ibatis的resultMap中有一属性是[color=#FF0000]group-by='字段'[/color],但是使用mybatis后发现resultMap中没有这个属性了,请问该怎么进行分组了?不希望在SQL语句中写group by xxx.因为涉及的SQL太多了[/b]
  • 关于Mybatis plus 使用QueryWrapper,group by + having ,自定义查询字段使用方法 例: QueryWrapper<CustomerBussUser> qw = new QueryWrapper<>(); qw.select("CUST_ID,count(*) as count1");//查询...
  • mybatis查询mysql,group by分组查询报错:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column mysql版本是5.7 1.导致出错的sql语句是: <select id=...
  • name,recognizee_card,SUM(coverage) as coverages from bbc_zsbank where id_card = #{params.idCard} GROUP BY recognizee_name,id_card 给不是 group by 条件的字段加了 min函数 起了别名让这个字段脱离数据库...
  • MyBatis

    2021-03-21 10:25:46
    Mybatis 1、MyBatis简介 1.1、什么是Mybatis MyBatis 是一款优秀的持久层框架 1.2、Mybatis的作用 它支持自定义 SQL、存储过程以及高级映射MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。...
  • mybatis

    2020-12-07 20:15:00
    sqlSession的commit , ...使用group by 时,select 字段只能是聚合函数或者group by 后面的参数 HAVING语句通常与GROUP BY语句联合使用,用来过滤由GROUP BY语句返回的记录集。 HAVING语句的存在弥补了WHERE关键字.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,723
精华内容 4,689
关键字:

bygroupmybatis