Подтвердить что ты не робот

SQL: INSERT INTO... VALUES..SELECT

Как написать инструкцию INSERT, если я получаю значения colA из TableX, colB из TableY и colC из TableZ?

например: INSERT INTO TableA (colA, colB, colC) VALUES (?,?,?)

Любые идеи, если это возможно?

4b9b3361

Ответ 1

INSERT INTO TableA(colA, colB, colC)
  SELECT TableX.valA, TableY.valB, TableZ.valC
    FROM TableX
   INNER JOIN TableY ON :......
   INNER JOIN TableZ ON ........

Конечно, TableX, TableY и TAbleZ также могут быть связаны каким-то другим способом (не INNER JOIN).

Если вы не можете найти какое-либо отношение между таблицами AT ALL, вы также можете сделать три отдельных

SELECT @value1 = valA FROM TableX WHERE ......
SELECT @value2 = valB FROM TableY WHERE ......
SELECT @value3 = valC FROM TableZ WHERE ......

а затем вставить:

INSERT INTO TableA(colA, colB, colC)
             VALUES(@value1, @value2, @value3)

В конечном итоге вы не можете выразить все в одном выражении SELECT.

Марк

Ответ 2

В ответ на ответ marc_s вы можете запрашивать из несвязанных таблиц в после выбора, например:

INSERT INTO TableA
    (colA, colB, colC)
SELECT
    (SELECT valA FROM TableX WHERE ...),
    (SELECT valB FROM TableY WHERE ...),
    (SELECT valC FROM TableZ WHERE ...)

Ответ 3

Insert into TableA (ColA, ColB, ColC) . . .

Должны быть имена столбцов, как указано в таблице A. Нет ничего плохого в

Insert into TableA (ColA, ColB, ColC) . . .
Select TableX.Col1, TableY.Col1, TableZ.Col5 
From TableX, TableY, TableZ
Where . . .