sql >> Databasteknik >  >> RDS >> Mysql

MySQL UPPDATERA villkorligt radernas booleska kolumnvärden baserat på en vitlista med id

Har du inte glömt att göra ett "ANNARS" i ärendet?

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

Utan ELSE antar jag att utvärderingskedjan stannar vid den sista NÄR och kör den uppdateringen. Dessutom begränsar du inte raderna som du försöker uppdatera; om du inte gör det ANNAT bör du åtminstone berätta för uppdateringen att bara uppdatera de rader du vill ha och inte alla rader (som du gör). Titta på WHERE-satsen nedan:

  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. En datamodell för peer-to-peer-utlåningsplattform

  2. Hitta distinkta värden snabbt

  3. Hur man frågar sql med aktiv post för datum mellan angivna tider

  4. Kroniska inaktuella resultat med MySQLdb i Python