SQL INSERT из выбора со значениями NULL - PullRequest
0 голосов
/ 24 апреля 2018

Добрый день в моем часовом поясе.

Мне нужно вставить строку в таблицу, но один из столбцов - это значения из другой таблицы. Итак, я хочу сделать что-то вроде этого

INSERT TABLE_NAME(COL1,COL2,COL3,COL4) VALUES("VAL1","VAL2","VAL3",(SELECT COL_A FROM TABLE2 WHERE COL_B = 'X'))

Но я думаю, что приведенный выше код невозможен, поэтому я использую следующий код:

INSERT INTO TABLE_NAME(COL1,COL2,COL3,COL4) 
SELECT "COL1","COL2","COL3", COL_A FROM TABLE2 T2
WHERE COL_B= "X"

Мой вопрос: Я хочу вставить значения, даже если выбор не возвращает значения, и в этом случае COL4 будет NULL

Как мне этого добиться?

Заранее спасибо С наилучшими пожеланиями

Ответы [ 2 ]

0 голосов
/ 24 апреля 2018

Как я понял из вашего описания, только один столбец имеет значение NULL, остальные 3 столбца имеют значения.Вы должны использовать Select INTO как https://www.w3schools.com/sql/sql_select_into.asp

SELECT COL1,COL2,COL3,COL4 INTO TABLE2 FROM TABLE_NAME WHERE COL_B= "X"
0 голосов
/ 24 апреля 2018

Нет, вы не можете вставить строку, которой нет в таблице.

Если вы ожидаете одну строку (в случае совпадения), вы можете использовать агрегирование:

INSERT INTO TABLE_NAME(COL1, COL2, COL3, COL4) 
    SELECT "COL1","COL2","COL3", MAX(COL_A)
    FROM TABLE2 T2
    WHERE COL_B = 'X';

Это вернет NULL, если совпадений нет - только одна строка, даже если в таблице несколько совпадений.

...