简单地说:我希望在CASE语句的'THEN'部分之后放置子查询,它将返回不止一行。这可能吗?更多细节如下:MySQL Case语句,在'语句列表'中返回的多行行(Then Then ...之后的部分)
我正在寻找一种方法来从CASE语句中取回多行,即使我的SELECT语句中的其他字段只返回一行。我不断收到'子查询返回多行'。这就是我想要的!
表:
courses
-------
course_id, fksubject_id;
course_reports
--------------
course_reports_id, fkcourse_id, is_finished, timestamp;
course_reports_answers
----------------------
course_reports_answers_id, fkcourse_reports_id, fkquestion_id, answer1, answer2, answer3
QUERY:
SELECT
cr.course_reports_id,
CASE WHEN c.fksubject_id = 1 THEN (SELECT fkquestion_id from course_reports_answers WHERE fkcourse_reports_id = 1) ELSE NULL END AS 'fkquestion_id'
FROM
courses c
join course_reports cr on cr.fkcourse_id = c.course_id
join course_reports_answers cra on cra.fkcourse_reports_id = cr.course_reports_id
所以,因为有每course_report_id多fkquestion_ids,期望的结果是:
1 1
1 2
1 3
1 4
1 5
etc.
同样,我越来越'子查询返回多行。'
我想重复一个值,并将其与不同的值配对,创建多行。我认为我以前做过这件事,但是我很难找到我过去的问题,或者弄清楚我现在正在做什么。注意:这个SELECT最终将用于填充插入语句。任何帮助是极大的赞赏!
所以,如果课程主题ID不是1,做你想要它返回呢? – itsmatt
实际上,对于每个可能的subject_id,真正的查询都会有类似的情况,并且where子句中会有一些参数限制结果。我认识到(现在)它在示例中的写法可能会提供一堆NULL行,但在真正的查询中不会这样(我无法提供,因为它适用于我的雇主)。 –