Я хочу вставить из оператора выбора с помощью объединения ALL - PullRequest
3 голосов
/ 30 ноября 2011

Я хочу использовать объединение для запроса при вставке записей в таблицу. Вставка также имеет некоторые жестко закодированные значения. Остальные ценности исходят от союза. например ..

INSERT INTO my_test_one (name, sirname, Dept)
VALUES
  ((select 'name1','sirname1', Dept FROM my_test_one_backup WHERE dept = 500 
    union all
    select 'name1','sirname1', Dept FROM my_test_one_backup WHERE dept = 501 ));

Ответы [ 4 ]

5 голосов
/ 30 ноября 2011

Попробуйте:

INSERT INTO my_test_one (name, sirname, Dept) 
(select 'name1','sirname1', Dept 
   FROM my_test_one_backup 
  WHERE dept = 500      
UNION ALL
 select 'name1','sirname1', Dept 
   FROM my_test_one_backup 
  WHERE dept = 501 );

Надеюсь, это поможет ...

2 голосов
/ 30 ноября 2011

Я думаю, вам не нужно VALUES здесь. (INSERT INTO ... ( ... ) SELECT ...)

1 голос
/ 30 ноября 2011

Почему бы вам не использовать две вставки вместо объединения все?

INSERT INTO my_test_one (name, sirname, Dept)
SELECT 'name1','sirname1', Dept FROM my_test_one_backup WHERE dept = 500;

INSERT INTO my_test_one (name, sirname, Dept)
SELECT 'name1','sirname1', Dept FROM my_test_one_backup WHERE dept = 501;

или

INSERT INTO my_test_one (name, sirname, Dept)
SELECT 'name1','sirname1', Dept FROM my_test_one_backup WHERE dept in (500,501);
0 голосов
/ 30 ноября 2011

Вы можете сделать это так:

Если таблица не существует, вы можете использовать это:

SELECT 'name1' [name],'sirname1' [sirname], Dept INTO my_test_one FROM my_test_one_backup WHERE dept = 500 
UNION ALL
SELECT 'name1','sirname1', Dept FROM my_test_one_backup WHERE dept = 501

В противном случае используйте это:

INSERT INTO my_test_one (name, sirname, Dept)
SELECT 'name1','sirname1', Dept FROM my_test_one_backup WHERE dept in (500,501)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...