sql >> Database teknologi >  >> RDS >> Mysql

MySQL OPDATERING betinget rækkers booleske kolonneværdier baseret på en hvidliste over id'er

Har du ikke glemt at lave et "ELSE" i sagsfremstillingen?

UPDATE my_table
    SET field = CASE
        WHEN id IN (/* true ids */) THEN TRUE
        WHEN id IN (/* false ids */) THEN FALSE
        ELSE field=field 
    END

Uden ELSE, antager jeg, at evalueringskæden stopper ved det sidste HVORNÅR og udfører den opdatering. Du begrænser heller ikke rækkerne, som du forsøger at opdatere; hvis du ikke gør det ANDET, skal du i det mindste fortælle opdateringen om kun at opdatere de rækker, du ønsker, og ikke alle rækkerne (som du gør). Se WHERE-sætningen nedenfor:

  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)


  1. Brug af MySQL relationelle databaser på Gentoo

  2. Sådan konfigureres AppArmor til PostgreSQL og TimescaleDB

  3. Rekursiv forespørgsel i SQL Server

  4. Oprettelse af en PostgreSQL-bruger og tilføjelse af dem til en database