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


Respostas:


465

Que tal agora

UPDATE table SET columnB = columnA;

Isso atualizará todas as linhas.


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

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;

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.