Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL ATUALIZAR condicionalmente os valores das colunas booleanas das linhas com base em uma lista de permissões de ids


Você não esqueceu de fazer um "ELSE" na instrução case?
UPDATE my_table
    SET field = CASE
        WHEN id IN (/* true ids */) THEN TRUE
        WHEN id IN (/* false ids */) THEN FALSE
        ELSE field=field 
    END

Sem o ELSE, suponho que a cadeia de avaliação pare no último WHEN e execute essa atualização. Além disso, você não está limitando as linhas que está tentando atualizar; se você não fizer o ELSE, você deve pelo menos informar à atualização para atualizar apenas as linhas desejadas e não todas as linhas (como você está fazendo). Veja a cláusula WHERE abaixo:
  UPDATE my_table
        SET field = CASE
            WHEN id IN (/* true ids */) THEN TRUE
            WHEN id IN (/* false ids */) THEN FALSE
        END
  WHERE id in (true ids + false_ids)