mysql的insert into select from dual 括号情况

由于本人之前使用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 ...

你可以在括号后面加个别名试试。