2014-09-11 5 views
1

Я обнаружил, что Access не разрешает запросы Insert Into для нескольких записей, если только не использовать запрос Select из таблицы с одной строкой. Тем не менее, это не работает, и я не уверен, что мне не хватает.SQL-вставка для нескольких записей сразу с одной строкой Таблица

  • Я пытаюсь вставить в 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 столом, но я не могу понять решение.

+0

Я считаю, что вам не нужен внешний запрос и просто используйте его с помощью UNION ALL – Elias

+0

Вы также можете захотеть присвоить свои столбцы. –

+0

Без внешнего запроса я получаю сообщение об ошибке: «Синтаксическая ошибка в предложении FROM» – sagooz

ответ

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-е изд запросов, так что имена совпадали в ВСТАВКА пункт.

0

попробовать как это:

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

Ошибка синтаксиса (отсутствующий оператор) в выражении запроса '' abc 'Union All Select' user2 ''. – sagooz

Смежные вопросы