Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Warunkowe w MYSQL gdzie klauzula

Możesz to zrobić za pomocą AND i OR o ile użyjesz wystarczającej liczby nawiasów.

Zakładam też, że activities.OrderBy może mieć wartość pustą. Jeśli tak nie jest, możesz usunąć zaznaczenie zerowe:

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 

Alternatywnie, jeśli nadal chcesz używać CASE , wystarczy zamknąć CASE oświadczenie przy użyciu END , tak:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pula połączeń Perla

  2. Mysql 1 losowy wiersz

  3. Jak przejść przez wszystkie tabele w bazie danych, aby zaktualizować kolumny?

  4. Jakie są praktyczne różnice między poleceniami „ZAMIEŃ” i „WSTAW… NA ZDUPLIKOWANY KLUCZ UPDATE” w MySQL?

  5. Zmuś użytkowników do posiadania najnowszej wersji aplikacji na Androida