我的SQL语句看起来像这样

SELECT q.content
FROM questions AS q, user_question_assoc AS uqa
WHERE uqa.user_id=? AND (q.course_id = uqa.course_id
OR q.lesson_id=uqa.lesson_id
OR q.question_id=uqa.question_id)


陈述的最后一部分不是我所需要的

WHERE uqa.user_id=? AND (q.course_id = uqa.course_id
    OR q.lesson_id=uqa.lesson_id
    OR q.question_id=uqa.question_id)


实际上,我想从以下内容中找出1个和唯一的MySQL语句(我试图用人类语言进行解释)

如果uqa.question_id不为0(或NULL),则

WHERE uqa.user_id=? AND (q.course_id = uqa.course_id
        AND q.lesson_id=uqa.lesson_id
        AND q.question_id=uqa.question_id)


如果uqa.lesson_id不为0(或NULL),但uqa.question_id为0,则

WHERE uqa.user_id=? AND (q.course_id = uqa.course_id
        AND q.lesson_id=uqa.lesson_id)


如果uqa.course_id不是0(或NULL),但uqa.question_iduqa.lesson_id为0,则

WHERE uqa.user_id=? AND q.course_id = uqa.course_id


有什么建议么?提前Thx

最佳答案

我认为您可以在以下情况下使用案例:

WHERE (CASE WHEN xx is not null then xid when yyx is null the yid end) = (CASE WHEN ww is null then someother id else id end)


我不知道MySQL中的语法,但这是可以在Oracle或MS sql中完成的方法

10-04 22:30