sql >> Databasteknik >  >> RDS >> Mysql

Mysql-fallet fungerar inte

När du sätter kolumnnamn efter CASE , bör du inte använda WHEN column = value , använd bara WHEN value , eftersom den automatiskt jämför kolumnen med varje värde i WHEN klausuler.

CASE type
    WHEN 1 THEN 'General day'
    ELSE 'Special date'
END AS type_changed,
CASE week_day 
   WHEN -1 THEN 'notset' 
   WHEN 1 THEN 'monday' 
   WHEN 2 THEN 'tuesday' 
   WHEN 3 THEN 'wednesday' 
   WHEN 4 THEN 'thursday' 
   WHEN 5 THEN 'friday' 
   WHEN 6 THEN 'saturday' 
   WHEN 7 THEN 'sunday' 
END AS week_day_mod , 

När du gör båda testar du week_day = (week_day = -1) , week_day = (week_day = 1) , etc. Det fungerar på måndag eftersom 1 = (1 = 1) motsvarar 1 = 1 , vilket är sant; men på tisdag är det 2 = (2 = 2) , vilket motsvarar 2 = 1 , vilket är falskt.




  1. SQLite - JOIN-satser

  2. Skicka en lista till MySQL lagrad procedur och kontrollera att ALLA värden finns

  3. Hur man förbereder satser och bindningsparametrar i Postgresql för C++

  4. Hur väljer man kolumner från en tabell som har icke-nullvärden?