INSERT INTO表SELECT不使用H2 DB中的常量值

时间:2017-05-15 03:33:21

标签: sql h2 liquibase h2db

以下是H2DB查询

 INSERT INTO userpermission (userid, permissionid, createddt, createdby, updateddt, updatedby)
            SELECT u.userid, p.permissionid, now(), ("1"), now(), ("1") FROM user u, permission p
            WHERE u.email = "csr_admin@example.com";

我想要实现的是为用户表中的给定电子邮件地址的用户插入记录到权限表中的每个权限。

以下是错误

 Reason: liquibase.exception.DatabaseException: Column "1" not found; SQL statement:
                                    INSERT INTO userpermission (userid, permissionid, createddt, createdby, updateddt, updatedby)
                                                SELECT u.userid, p.permissionid, now(), ("1"), now(), ("1") FROM user u, permission p
                                                WHERE u.email = "csr_admin@example.com" [42122-193] [Failed SQL: INSERT INTO userpermission (userid, permissionid, createddt, createdby, updateddt, updatedby)
                                                SELECT u.userid, p.permissionid, now(), ("1"), now(), ("1") FROM user u, permission p
                                                WHERE u.email = "csr_admin@example.com"]

同样的查询在MySQL中有效。

1 个答案:

答案 0 :(得分:1)

如评论中所述,

  1. 对sting常量使用单引号。
  2. 不要在select子句中使用带有常量的大括号。
  3. 检查连接条件。如果不基于公共列匹配2个表,则执行Cartesian product