MySQL - Como fazer múltiplos updates com uma única query




Vamos supor que temos uma tabela chamada parameters com os campos param, value, type e description:


 +-------------+------------------------+------+-------------------------------------+  
 | param       | value                  | type | description                         |  
 +-------------+------------------------+------+-------------------------------------+  
 | EXPERIMENTO | 1504037801122          | int  | ID do experimento atual             |  
 | CONFIG      | {"idPublication":"10"} | str  | Configurações de treinamento atuais |  
 +-------------+------------------------+------+-------------------------------------+  

Supondo que precisamos atualizar apenas o campo value das duas linhas acima com updates, como seria o processo "sem pensar muito"?

Bom, seria simplesmente utilizar duas queries UPDATE, correto?

 UPDATE parameters SET value = '174305845' WHERE param = 'EXPERIMENTO'  
 UPDATE parameters SET value = '{"idPublication":"15"}' WHERE param = 'CONFIG'  

Mas esta metodologia é bem feia, flerta com o amadorismo.

Podemos, de outra forma, utilizar uma única query para fazer o mesmo serviço:

 UPDATE  
  parameters   
 SET   
   value = CASE param   
      WHEN 'EXPERIMENTO' THEN '174305845'  
      WHEN 'CONFIG' THEN '{"idPublication":"15"}'  
   END  
 WHERE   
   param IN ( 'EXPERIMENTO' , 'CONFIG' )

Espero que tenha ajudado

Abraços


Comentários

Postagens mais visitadas deste blog

MySQL - Completando quantidades fixas de caracteres com as funções LPAD() e RPAD()

MySQL - Clonando tabelas na linha de comando

PHP - Gerando arquivo em UTF-8 com fwrite() e utf8_encode()