Neste tutorial, veremos as várias maneiras de atualizar linhas em uma tabela usando SQL, progredindo de atualizações mais gerais para métodos mais específicos.
Atualização completa
Se todos os campos precisam ser atualizados para o mesmo valor, você pode fazer isso usando um simples
UPDATE
comando. UPDATE table
SET col = new_value;
Atualização condicional
Para fazer uma atualização condicional dependendo se o valor atual de uma coluna corresponde à condição, você pode adicionar um
WHERE
cláusula que especifica isso. O banco de dados primeiro encontrará as linhas que correspondem ao WHERE
cláusula e, em seguida, apenas execute atualizações nessas linhas. UPDATE table
SET col = new_value
WHERE col = old_value;
Para expandir isso, você pode adicionar qualquer coisa ao
WHERE
cláusula que você gosta, desde que seja uma expressão válida. Portanto, para realizar uma atualização com base no valor de outra coluna na mesma tabela, você pode executar o seguinte:UPDATE table
SET col = new_value
WHERE other_col = some_other_value;
Desde o
WHERE
cláusula pode conter qualquer expressão válida, você também tem a possibilidade de fazer atualizações onde várias colunas atendem aos critérios UPDATE table
SET col = new_value
WHERE col = old_value
AND other_col = some_other_value;
UPDATE table
SET col = new_value
WHERE col = old_value
OR other_col = some_other_value;
Como você pode ver, você pode expandir o
WHERE
cláusula o quanto você quiser para filtrar as linhas para atualizar para o que você precisa. Agora, o que acontece se você quiser atualizar linhas em uma tabela com base na condição de outra tabela? Esta pergunta leva a algumas maneiras diferentes de fazer isso.
Desde o
WHERE
cláusula pode conter qualquer expressão válida, você pode usar uma subconsulta:UPDATE table
SET col = new_value
WHERE other_col IN (
SELECT other_col
FROM other_table
WHERE conditional_col = 1
);
Você também pode usar uma subconsulta no
SET
parte da instrução se você quiser definir a coluna para um valor em outra tabela UPDATE table
SET col = (
SELECT other_col
FROM other_table
WHERE other_table.table_id = table.id
);
Talvez uma maneira mais fácil seja especificar várias tabelas após o
UPDATE
cláusula. Apenas o SET
expressão executará atualizações, mas listar tabelas adicionais permitirá que as tabelas sejam incluídas. UPDATE table, other_table
SET table.col = other_table.other_col
WHERE table.id = other_table.table_id;
Da mesma forma que expandir o
WHERE
cláusula, a quantidade de tabelas pode ser expandida para incluir todas as tabelas que você precisa se você tiver várias tabelas que precisam ser unidas.