Как я могу скопировать данные из одного столбца в другой в той же таблице?

Ответы:

466

Как насчет этого

UPDATE table SET columnB = columnA;

Это будет обновлять каждую строку.

Эш Бурлаченко
источник
1
Это также будет работать , если вы хотите передать старое значение в другой колонке и обновлять первый: UPDATE table SET columnA = 'new value', columnB = columnA. Как говорит другой ответ - не забывайте предложение WHERE, чтобы обновить только то, что нужно.
Карл ди Ортус
5
Я думаю, что в какой-то сложной процедуре я делаю цикл для каждой записи, когда ответ так прост
deFreitas
6
@deFreitas Один мудрец сказал мне: если вы думаете о написании цикла для выполнения чего-то в SQL, вы делаете это неправильно.
Даниэль Патрик
95
UPDATE table_name SET
    destination_column_name=orig_column_name
WHERE condition_if_necessary
dev4092
источник
10
@ Марк, это на самом деле имеет смысл, почему за это проголосовали? У меня была ситуация, когда мне нужно скопировать значение даты из одного столбца в другие столбцы, и это относится только к НЕКОТОРЫМ столбцам, а не ко всем. Поэтому наличие WHERE в утверждении было бы необходимо.
finnTheHumin
5
@finnTheHuman Вопрос состоит в том, как «скопировать данные из всех записей», на которые предыдущий ответ отвечает правильно, так что это ничего не добавляет
мммммм
7
@Mark "Как это отличается от старого принятого ответа", у него есть предложение WHERE. «Так что это ничего не добавляет», я не согласен, это что-то добавляет. Хорошо бы включить пункт ГДЕ ЕСЛИ НЕОБХОДИМО. мы должны нести ответственность за ответы на голосование. ненавистники
собираются
В моем случае я добавил столбец last_seen. UPDATE user SET last_seen = first_seen WHERE last_seen IS NULL
luckydonald
Я не согласен с одним из вас. Но не хочет сказать, кто! Где пункт работает как удовольствие ты
Эндрю Дэй
0

Это обновит все строки в этих столбцах, если безопасный режим не включен.

UPDATE table SET columnB = columnA;

Если безопасный режим включен, то вам нужно использовать предложение where. Я использую первичный ключ, так как больше 0 в основном все будет обновляться

UPDATE table SET columnB = columnA where table.column>0;

Ваюй Раджан
источник