2017-01-31 2 views
0

В SQL (любой вариант вам нравится, скажем, MySQL или MonetDB) это очень интуитивным и простым сделать:Как добавить результат SELECT в качестве нового столбца в существующей таблице?

CREATE TABLE t2 AS SELECT c1 FROM t1; 

и получить результат выбора в качестве нового столбца в новую таблицу. Но что, если вы хотите получить результат в качестве нового столбца в таблице такой же таблицы (таблица t1)? Предположим, что c1 имеет тип INT и может быть пустым. Мы должны были бы написать:

ALTER TABLE t1 ADD c2 INT; 
UPDATE TABLE t1 SET c2 = c1; 

и это легко версия, так как если это не нулевой столбец мы должны инициализировать новый столбец с некоторым значением; и если данные поступают из нескольких таблиц, мне нужен какой-то внутренний запрос в UPDATE (если бы это было возможно).

Могу ли я выбрать-в-столбце с помощью одной команды?

ответ

1

Вы используете join:

UPDATE t1 JOIN 
     t2 
     ON t2.? = t1.? 
    SET t1.c2 = t2.c1; 

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

+0

Но у меня нет 't2'. У меня только 't1'. Я хочу избежать создания 't2'. – einpoklum