1
resposta

[Dúvida] Como faço pra unir todos os 'UPDATE's em só um comando?

Estou fazendo um projeto da faculdade e estou com dificuldade de usar o SELECT junto com o UPDATE, preciso que ele puxe a informação da tabela VOCALISTAS coluna ID_VOCALISTA para a tabela MUSICAS coluna ID_VOCALISTA_FK aonde a coluna ID_BANDA_FK tiver o mesmo valor nas duas tabelas.

Até o momento cheguei nessa solução, mas queria saber uma forma de fazer essa ação com apenas um comando.

UPDATE MUSICAS SET ID_VOCALISTA_FK = (
    SELECT ID_VOCALISTA FROM VOCALISTAS WHERE VOCALISTAS.ID_BANDA_FK = MUSICAS.ID_BANDA_FK
) WHERE MUSICAS.ID_BANDA_FK = 1;

UPDATE MUSICAS SET ID_VOCALISTA_FK = (
    SELECT ID_VOCALISTA FROM VOCALISTAS WHERE VOCALISTAS.ID_BANDA_FK = MUSICAS.ID_BANDA_FK
) WHERE MUSICAS.ID_BANDA_FK = 2;

UPDATE MUSICAS SET ID_VOCALISTA_FK = (
    SELECT ID_VOCALISTA FROM VOCALISTAS WHERE VOCALISTAS.ID_BANDA_FK = MUSICAS.ID_BANDA_FK
) WHERE MUSICAS.ID_BANDA_FK = 3;

UPDATE MUSICAS SET ID_VOCALISTA_FK = (
    SELECT ID_VOCALISTA FROM VOCALISTAS WHERE VOCALISTAS.ID_BANDA_FK = MUSICAS.ID_BANDA_FK
) WHERE MUSICAS.ID_BANDA_FK =  etc... ;
1 resposta

Oi, Nicole

Via chatGPT


UPDATE MUSICAS
SET ID_VOCALISTA_FK = (
    CASE
        WHEN MUSICAS.ID_BANDA_FK = 1 THEN (SELECT ID_VOCALISTA FROM VOCALISTAS WHERE VOCALISTAS.ID_BANDA_FK = MUSICAS.ID_BANDA_FK)
        WHEN MUSICAS.ID_BANDA_FK = 2 THEN (SELECT ID_VOCALISTA FROM VOCALISTAS WHERE VOCALISTAS.ID_BANDA_FK = MUSICAS.ID_BANDA_FK)
        WHEN MUSICAS.ID_BANDA_FK = 3 THEN (SELECT ID_VOCALISTA FROM VOCALISTAS WHERE VOCALISTAS.ID_BANDA_FK = MUSICAS.ID_BANDA_FK)
        -- Adicione mais cláusulas WHEN para cada condição
    END
)
WHERE MUSICAS.ID_BANDA_FK IN (1, 2, 3);

Insira aqui a descrição dessa imagem para ajudar na acessibilidade