赞
踩
最近接收了一个XUEXIAO的老项目使用的是sqlserver库,然后需要从别的库拉取数据并且插入其他库中,然而我再mybatis里面写的sql报错,说是我","附近语法错误,然后经过检查发现,sqlserver的批量新增跟mysql跟oracle不太一样,特意写下此文防止大家踩坑。
刚开始的sql
注意 :XX表示的是表名或者字段
<insert id="XXX" parameterType="list">
insert into
XX (XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX)
VALUES
<foreach collection="list" index="index" item="item" open="" close="" separator=" , ">
#{item.XX},#{item.XX}, #{item.XX},#{item.XX}, #{item.XX},#{item.XX}, #{item.XX},#{item.XX}, #{item.XX},#{item.XX}, #{item.XX}
</foreach>
</insert>
修改以后的sql
<insert id="XXX" parameterType="list">
insert into
XX (XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX)
SELECT
<foreach collection="list" index="index" item="item" open="" close="" separator=" UNION ALL SELECT ">
#{item.XX},#{item.XX}, #{item.XX},#{item.XX}, #{item.XX},#{item.XX}, #{item.XX},#{item.XX}, #{item.XX},#{item.XX}, #{item.XX}
</foreach>
</insert>
批量插入数据
insert into 表名 select * from 表
--或
insert into 表名(字段1,字段2) select 字段1,字段2 from 表
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。