sql >> Database >  >> RDS >> Mysql

MySQL voorwaardelijk de booleaanse kolomwaarden van rijen BIJWERKEN op basis van een witte lijst met id's

Bent u niet vergeten een "ELSE" in de casusverklaring in te vullen?

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

Zonder de ELSE neem ik aan dat de evaluatieketen stopt bij de laatste WANNEER en die update uitvoert. U beperkt ook niet de rijen die u probeert bij te werken; als u de ELSE niet doet, moet u de update op zijn minst vertellen om alleen de gewenste rijen bij te werken en niet alle rijen (zoals u aan het doen bent). Kijk naar de WHERE-clausule hieronder:

  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. Beste DBaaS-oplossing voor MySQL

  2. Werken met ODBC-gegevens in DbVisualizer

  3. Waarom stelt Eclipse Object voor als standaardtoewijzingstype voor gegevenstype Tekst?

  4. Hoe te bestellen op datum in PostgreSQL of Oracle