mybatis insert into select 丢失数据!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis insert into select 丢失数据!相关的知识,希望对你有一定的参考价值。
我在使用Mybatis执行insert into select 的时候出现了数据丢失,这是什么情况呢?下面是我的配置:
<!-- 保存15分钟统计数据 -->
<insert id="insertStatisticsData" parameterType="com.nantian.nump.bean.State" >
insert into $indexCode
select t.IP as IP, t.COMPONENT_CODE AS COMPONENT_CODE, $collectTime as COLLECT_TIME, t.INDEX_CODE as INDEX_CODE,
max(t.value) as MAX_VALUE, min(t.value) as MIN_VALUE, cast(avg(cast(t.value as decimal(15,2))) as decimal(15,2)) as AVG_VALUE
from (select d.* from $tabname d, INDEX_ITEM i, MONITOR_UNIT m
where i.INDEX_CODE = (case locate('-', d.index_code) when 0 then d.index_code else substr(d.index_code, 1, locate('-', d.index_code)-1) end)
and i.UNIT_ID = m.UNIT_ID and i.CLASS_ID = m.CLASS_ID
and m.CHART_TYPE <> '0'
and collect_time < #value and collect_time >= #componentCode) t
group by t.IP, t.COMPONENT_CODE, t.INDEX_CODE
</insert>
执行之后插入的数据比实际查询出来的少了几十条,数据是没有问题的,所有字段都是字符串,并且长度一致也没有超限。主键不冲突(如11.129.163.65和11.129.163.66,这其中有条数据就丢失了)。执行过程中没有出现异常。
请各位大神帮忙看看,谢谢!非常感谢。
您好,我的语句是正常执行了的,只是insert的数据比select出来的数据要少。
本回答被提问者和网友采纳以上是关于mybatis insert into select 丢失数据!的主要内容,如果未能解决你的问题,请参考以下文章
mybatis 中用insert into select ..... 报错命令未正确结束,但把这句sql放到plsql中执行正常
mybatis 中用insert into select ..... 报错命令未正确结束,但把这句sql放到plsql中执行正常