使用一行表一次插入多个记录的SQL

时间:2014-09-11 17:49:53

标签: sql ms-access-2013

我发现Access不允许Insert Into查询多个记录,除非使用一行表中的Select查询。尽管如此,它还不起作用,我不确定我错过了什么。

  • 我试图插入tblTarget,其中包含3个字段:ID,F1,F2(分别是自动编号,编号,编号)。

  • 我创建了一个表onerow。我不确定应该如何创建它,所以它现在有以下字段:ID,F1,F2(目标表的相同字段),只有一行(空行,ID除外)。请注意,我还没有将表格编程为仅允许一行,目前只有一行。

  • 查询:

    INSERT INTO tblTarget (F1, F2)
    SELECT * FROM (
    SELECT '31','3' FROM onerow
    UNION ALL
    SELECT '31','2' FROM onerow);
    
  • 我收到错误:" Insert Into语句包含以下未知字段名称:' Expr1000'。确保您输入正确,然后再次尝试操作。

我的直觉说问题在于onerow表,但我无法找出解决方案。

2 个答案:

答案 0 :(得分:2)

这适用于Access 2010:

INSERT INTO tblTarget (F1, F2)
SELECT *
FROM
    (
        SELECT 31 AS F1, 3 AS F2 FROM onerow
        UNION ALL
        SELECT 31, 2 FROM onerow
    )

诀窍是在第一个UNION-ed查询中指定字段名称,以便名称与INSERT子句中的名称相匹配。

答案 1 :(得分:0)

尝试这样:

Insert into UserData(UserName,Password)
Select 'user1','abc'
Union All
Select 'user2','abc'