Como posso copiar dados de uma coluna para outra na mesma tabela?

253

É possível copiar dados da coluna A para a coluna B para todos os registros em uma tabela no SQL?

Jonney
fonte
1
possível duplicata Como copiar dados de uma coluna para outra coluna
Daniel DiPaolo
@DanielDiPaolo essa pergunta é para copiar uma coluna a uma tabela diferente
Nick T

Respostas:

465

Que tal agora

UPDATE table SET columnB = columnA;

Isso atualizará todas as linhas.

Ash Burlaczenko
fonte
1
Isso também irá funcionar se você deseja transferir o valor antigo para outra coluna e atualizar o primeiro: UPDATE table SET columnA = 'new value', columnB = columnA. Como outra resposta diz - não esqueça a cláusula WHERE para atualizar apenas o necessário.
Carl di Ortus
5
I pensar em alguns proc complexo fazer um laço em cada registro quando a resposta é tão simples
DeFreitas
6
@deFreitas Um sábio me disse: se você está pensando em escrever um loop para realizar algo no SQL, está fazendo errado.
Daniel Patrick
95
UPDATE table_name SET
    destination_column_name=orig_column_name
WHERE condition_if_necessary
dev4092
fonte
10
@ Mark, isso realmente faz sentido, por que isso é rebaixado? Eu tive uma situação em que preciso copiar um valor de data de uma coluna para outra, e isso se aplica apenas a ALGUMAS das colunas, e não a todas. Portanto, ter um WHERE na declaração seria necessário.
FinnTheHumin
5
@finnTheHuman A pergunta como "copiar dados de todos os registros", que as respostas resposta anterior corretamente de modo que este não acrescenta nada
mmmmmm
7
@ Mark "Como isso difere da antiga resposta aceita", possui uma cláusula WHERE. "para que isso não adicione nada", eu discordo, ele adiciona algo. é um bom ponto para incluir a cláusula WHERE SE NECESSÁRIO. devemos ser responsáveis ​​por respostas negativas. haters gon 'hate
finnTheHumin
No meu caso, adicionei uma coluna last_seen. UPDATE user SET last_seen = first_seen WHERE last_seen IS NULL
luckydonald
Eu discordo de um de vocês. Mas não quer dizer quem! Onde cláusula funciona como um mimo
Andrew Day
0

Isso atualizará todas as linhas nessas colunas se o modo de segurança não estiver ativado.

UPDATE table SET columnB = columnA;

Se o modo de segurança estiver ativado, você precisará usar uma cláusula where. Eu uso a chave primária como maior que 0 basicamente todos serão atualizados

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

Vayuj Rajan
fonte