Як можна скопіювати дані з одного стовпця в інший в тій самій таблиці?


253

Чи можливо скопіювати дані з стовпця А в стовпчик B для всіх записів у таблиці в SQL?



@DanielDiPaolo це питання про копіювання стовпця до іншої таблиці
Nick T

Відповіді:


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

10
@ Марк, це насправді має сенс, чому це сприйнято? У мене виникла ситуація, коли мені потрібно скопіювати значення дати з одного стовпця в інший, і це стосується лише ДЕЯКИХ стовпців, і не всіх. Тож мати СУД у заяві було б необхідно.
finnTheHumin

5
@finnTheHuman Питання задає, як "скопіювати дані з усіх записів", на які попередня відповідь відповідає правильно, щоб це нічого не додало
мммммм

7
@Mark "Як це відрізняється від старої прийнятої відповіді", у ньому є пункт WHERE. "так що це нічого не додає", я не погоджуюся, це щось додає. це хороший момент включити ДІЙНИЙ пункт, ЯКЩО НЕОБХІДНО. ми повинні відповідати за заборону відповідей. haters gon 'hate
finnTheHumin

У моєму випадку я додав стовпець last_seen. UPDATE user SET last_seen = first_seen WHERE last_seen IS NULL
luckydonald

Я не згоден з одним із вас. Але не готовий сказати хто !. Де пункт працює, як пригощаєш тебе
Андрій День

0

Це дозволить оновити всі рядки в цих стовпцях, якщо безпечний режим не ввімкнено.

UPDATE table SET columnB = columnA;

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.