条件SELECT MySQL

时间:2009-10-12 21:36:06

标签: sql mysql

不知道这是否可行,但我想根据recur_type的字段值选择记录,其中'm'是星期几。如果这是每周一次的重复活动,我需要确保这是它重复发生的一天,否则,我想要返回所有日子。但是,我得到一个空的结果集:

SELECT *
FROM wp_fun_bec_events
WHERE start_date <= '2009-10-12'
AND ( end_date >= '2009-10-12'
   OR (recur_end > '0' AND recur_end >= '2009-10-12' ) )
AND ('m' IN (
   CASE WHEN 'recur_type' = 'weekly'
    THEN recur_days
    ELSE 's/m/t/w/r/f/a'
   END ) )
ORDER BY start_date, start_time

任何想法??

2 个答案:

答案 0 :(得分:0)

它可能与您的IN子句有关。唯一可行的方法是'recur_days'等于'm'。因为'm'&lt;&gt;所以从不在'else'中工作's / m / t / w / r / f / a'(除非'm'是列的名称,那些撇号实际上是反引号。如果是,请告诉我,我会再试一次。)

答案 1 :(得分:0)

嗯。也许试试:

SELECT *
FROM wp_fun_bec_events
WHERE start_date <= '2009-10-12'
AND ( end_date >= '2009-10-12'
   OR (recur_end > '0' AND recur_end >= '2009-10-12' ) )
AND ((
   CASE WHEN 'recur_type' = 'weekly'
    THEN recur_days
    ELSE 's/m/t/w/r/f/a'
   END ) LIKE '%m%' )
ORDER BY start_date, start_time

不完全确定MySQL语法。