ВСТАВИТЬ результат SELECT и другие значения - PullRequest
3 голосов
/ 15 августа 2011

Я хочу знать, возможно ли это без процедур или вызовов на стороне сервера в базу данных.

Я пытаюсь вставить значения в таблицу на основе выбора и другие значения, которые будут предоставлены изсервер.

Оператор выбора вернет более одного результата.

Мне известно о существовании INSERT SELECT, но есть ли SELECT INSERT?или способ вставить на основе результатов выбора?

спасибо

Ответы [ 4 ]

4 голосов
/ 15 августа 2011

Не совсем уверен, в чем проблема.

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

INSERT INTO <i>table</i> (<i>columns</i>)
SELECT
  <i>column or column expression<sub>1</sub></i>,
  <i>column or column expression<sub>2</sub></i>,
  …
  <i>constant or constant expression<sub>1</sub></i>,
  <i>constant or constant expression<sub>2</sub></i>,
  …
FROM <i>a set of tables/joins</i>
WHERE …

Не обязательно в таком порядке (столбцы, затем константы), нет. Вы можете смешивать столбцы с константами любым способом, просто следуйте порядку столбцов, в которые вы вставляете.

Это то, о чем вы спрашивали?

3 голосов
/ 15 августа 2011

Да. Используйте этот запрос:

INSERT INTO FOO (oof, rab) SELECT (foo, bar) FROM BAR;
3 голосов
/ 15 августа 2011

Не понимаю, почему

INSERT INTO yourtable(col1, col2, col3)
SELECT col1, col2, col3
FROM yourothertable

не работает для вас. Но вы всегда можете сделать SELECT INTO #temptable, чтобы сохранить ваш запрос во временной таблице, а затем вы можете ВСТАВИТЬ эти данные или манипулировать ими перед вставкой. Впрочем, это далеко не оригинальная идея.

Я неправильно понимаю ваши вопросы?

1 голос
/ 15 августа 2011

Я думаю, вы можете сделать это:

INSERT INTO targetTable (col1, col2, col3)
SELECT col1, col2, col3 FROM sourceTable
UNION ALL
SELECT 'something' AS col1, 'something else' AS col2, 'yet something else' AS col3 FROM DUAL;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...