由于本人之前使用oracle,现在使用mysql,然后最近搞了一套模板自己自动生成模板代码,其中,对于批量增加使用了insert into select from dual 的方式:
<!-- 批量新增 -->
<insert id="batchInsert" parameterType="java.util.List">
insert into sys_login_user
( login_name, login_password, birthady)
( <foreach collection="list" item="item" separator="union all">
select
#{item.loginName},
#{item.loginPassword},
#{item.birthady}
from dual
</foreach> )
</insert>
然后在mysql中运行,始终存在错误,而这个代码是我之前在Oracle中运行无误的,后续我去掉了foreach的前后括号,再增加,可以了!
mysql无法运行:
INSERT INTO sys_login_user ( login_name, login_password, birthady ) (
SELECT
'a',
'a',
NULL
from dual
UNION ALL
SELECT
'b',
'b',
NULL from dual)
---------------------------分解线
mysql可以运行:
INSERT INTO sys_login_user ( login_name, login_password, birthady )
SELECT
'a',
'a',
NULL
from dual
UNION ALL
SELECT
'b',
'b',
NULL from dual
然后现在我不知道为什么会出现这种情况,有清楚的老哥吗?
INSERT INTO select语法就是这样的。
INSERT INTO table2 (c1,c2,c3...) SELECT c1,c2,c3... FROM table1 where ...
你可以在括号后面加个别名试试。