mySQL - 使用外部查询值作为子查询的列名

时间:2013-12-30 17:21:52

标签: mysql sql subquery

我有一张桌子可以举行考试;另一张持有考试答案的表格。

我想开发一个查询,列出考试题目,以及每个考试最常见的答案。

问题表的相关部分如下:

name    question_text 
ex1_qs1 1.    What is furry and has four legs? 
ex1_qs2 2.    What is hairless and has two legs? 

回复表的相关部分如下:

session_id  ex1_qs1 ex1_qs2 
123456789   cat man 
112233445   dog woman
111222333   dog woman

我知道我可以得到这样的问题清单:

Select name, question_text 
From questions
Order By LENGTH(name), name

对于每个问题最常见的回答是这样的:

SELECT ex1_qs1
FROM responses
GROUP BY ex1_qs1
ORDER BY COUNT(*) DESC LIMIT 1

但是我没有看到如何将它们作为子查询放在一起,因为子查询所需的列名是来自主查询的值。我不能把它硬编码为一堆UNION。

我在下面使用什么而不是硬编码的“ex1_qs1”(因为我需要使用外部查询中“name”字段的值)?或者是否需要另一种方法?

Select name, question_text, (SELECT ex1_qs1 FROM responses GROUP BY ex1_qs1 ORDER BY COUNT(*) DESC LIMIT 1) as most_common_response 
From questions
Order By LENGTH(name), name

0 个答案:

没有答案