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

Betinget i MYSQL where klausul

Du kan gøre dette med AND og OR så længe du bruger tilstrækkelige parenteser.

Jeg antager også, at activities.OrderBy kan være nul. Hvis det ikke er tilfældet, kan du fjerne nul-kontrollen:

SELECT activities.*, 
       activitytypes.orderby 
FROM   activities 
       LEFT OUTER JOIN activitytypes 
                    ON activities.typeid = activitytypes.typeid 
WHERE  activities.userid = 86 
       AND activities.typeid NOT IN ( 5, 10, 11, 12, 19 ) 
       AND ( ( activities.orderby = 1 
               AND activities.starttime >= '2013-08-26 04:00:00' 
               AND activities.endtime <= '2013-08-27 04:00:00' ) 
              OR ( ( activities.orderby IS NULL 
                      OR activities.orderby != 1 ) 
                   AND activities.activitydate = '2013-08-26' ) ) 
ORDER  BY activitytypes.orderby, 
          activities.starttime 

Alternativt, hvis du stadig ønsker at bruge CASE , du skal bare lukke din CASE sætning ved hjælp af END , sådan her:

SELECT          activities.*, 
                activitytypes.orderby 
FROM            activities 
LEFT OUTER JOIN activitytypes 
ON              activities.typeid = activitytypes.typeid 
WHERE           activities.userid = 86 
AND             activities.typeid NOT IN ( 5, 10, 11, 12, 19 ) 
AND             ( 
                  CASE 
                  WHEN activities.orderby = 1 THEN
                    activities.starttime >= '2013-08-26 04:00:00' AND activities.endtime <= '2013-08-27 04:00:00'
                  ELSE
                    activities.activitydate = '2013-08-26' 
                  END
                ) 
ORDER BY        activitytypes.orderby, 
                activities.starttime



  1. Hvordan får jeg gem-installationen til at fungere på OS X Lion med Ruby 1.8.7 uden at fejle?

  2. Kan ikke oprette forbindelse til ekstern database ved hjælp af php

  3. Sådan installeres og konfigureres phpMyAdmin på CentOS 6

  4. DETERMINISTISK, INGEN SQL eller LÆSER SQL DATA i dens erklæring, og binær logning er aktiveret