Como fazer update entre dados de uma mesma tabela ?

Olá, sou um pouco novo em sql e gostaria de tirar uma duvida
eu possuo uma tabela
com os seguintes campos
ANO, NOME, CURSO, SERIE, CODIGO, CODTURMA
e dados em uma consulta onde tenho
ANO = 2018
NOME = JOAO
CURSO = 001
SERIE = 002
CODIGO = 123
CODTURMA = 150B
como posso fazer um update para que todos esses dados sejam transferidos para uma turma 150A por exemplo

Se e só para mudar a turma:

UPDATE NOME_DA_TABELA

SET codturma = ‘150A’
WHERE CODIGO = 123;

Mas, isso eliminará as informações da turma 150B.

1 curtida

É funcional para mim, porém gostaria de saber se é possivel criar um novo registro com tudo igual mudando somente o codigo da turma

Bom, o SQL (nos principais databases pelo menos) tem um recurso chamado INSERT SELECT que você usa assim:

INSERT INTO nome_tabela (CODTURMA, ANO, NOME, CURSO, SERIA, CODIGO)
SELECT ‘150A’, ANO, NOME, CURSO, SERIE, CODIGO FROM nome_tabela WHERE CODTURMA = ‘150B’

Mas perceba que esse código acima funciona apenas se o registro da 150A ainda não existir, se já existir, você pode fazer um DELETE na 150A primeiro e depois executar o insert select, mas, se ela tiver integridade relacional não vai funcionar, você vai ter fazer um UPDATE SELECT conforme abaixo:

UPDATE nome_tabela SET ANO = b.ANO, NOME = b.NOME, CURSO = b.CURSO, SERIE = b.SERIE, CODIGO = b.CODIGO FROM (SELECT ANO, NOME, CURSO, SERIE, CODIGO
FROM nome_tabela) b WHERE CODIGOTURMA = ‘150B’

Seguem referencias dos recursos. Os usei no SQL SERVER, mas pelo que vi na net tem em outros databases também. :wink:

INSERT SELECT

UPDATE SELECT

1 curtida