使用CASE进行筛选时MySQL比较复杂

使用CASE进行筛选时MySQL比较复杂,mysql,case,case-when,Mysql,Case,Case When,我正试图找出如何过滤“组合”情况下的输出。我的前两个陈述很有效,并为我提供了我想要的课程(即滑雪运动员能力水平的滑雪板课程+未分级的私人课程)。我的第三条语句(inPreferredLessonType=3,即滑雪板或滑雪板)未能正确过滤输出集——我将获得各种能力水平与滑雪者的两个(单独存储的)能力水平匹配的任何滑雪板课程或滑雪课程。这不是正确的想法,让用户感到困惑 我想要的是在滑雪者的滑雪板能力水平上获得滑雪板课程+在滑雪者的滑雪能力水平上的滑雪课程+未分级的私人课程。请帮忙 (…SELECT

我正试图找出如何过滤“组合”情况下的输出。我的前两个陈述很有效,并为我提供了我想要的课程(即滑雪运动员能力水平的滑雪板课程+未分级的私人课程)。我的第三条语句(inPreferredLessonType=3,即滑雪板或滑雪板)未能正确过滤输出集——我将获得各种能力水平与滑雪者的两个(单独存储的)能力水平匹配的任何滑雪板课程或滑雪课程。这不是正确的想法,让用户感到困惑

我想要的是在滑雪者的滑雪板能力水平上获得滑雪板课程+在滑雪者的滑雪能力水平上的滑雪课程+未分级的私人课程。请帮忙

(…SELECT语句的其余部分…)


(…其余的筛选语句、排序依据等)

结果表明,我只需要将条件括起来,并根据滑雪与滑雪板的能力水平进行筛选

WHEN inPreferredLessonType = 3
      THEN (program.nBool_isSnowboard = 0 AND program.n_ability_level = inSkiAbilityLevel) 
            OR 
           (program.nBool_isSnowboard = 1 AND program.n_ability_level = inSnowboardAbilityLevel)
            OR 
            program.n_ability_level = 0

WHERE
子句中的条件检查吗?是的,相当复杂的WHERE子句,我没有在这里包括它,因为我已经调试了其余部分。
当inPreferredLessonType=3时(program.nBool\u isSnowboard=0和program.n\u ability\u level=inSkiAbilityLevel)或(program.nBool\u isSnowboard=1,program.n\u能力水平=inSnowboardAbilityLevel)或program.n\u能力水平=0
WHEN inPreferredLessonType = 3
      THEN (program.nBool_isSnowboard = 0 AND program.n_ability_level = inSkiAbilityLevel) 
            OR 
           (program.nBool_isSnowboard = 1 AND program.n_ability_level = inSnowboardAbilityLevel)
            OR 
            program.n_ability_level = 0