我的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_id
和uqa.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中完成的方法