mysql 对同一表中相同类型的行进行分组

guykilcj  于 2022-12-10  发布在  Mysql
关注(0)|答案(1)|浏览(144)

我有3个表questionsanswersquestions_answers
问题:

id | question | type_id
1  | Q1       | 1
2  | Q2       | 3
3  | Q3       | 1
4  | Q4       | 2

答案:

id | answer 
1  | A1
2  | A2
3  | A3

问题解答(_A):

id | question_id | answer_id
1  | 1           | 1
2  | 2           | 3
3  | 3           | 1

我想获取所有问题,并使用type_id对它们进行分组。
此查询将所有问题分组,但不知道哪个问题属于哪种类型:

SELECT GROUP_CONCAT(q.question, a.answer) FROM questions q
JOIN questions_answers qa ON qa.question_id = q.id
JOIN answers a ON qa.answer_id = a.id
GROUP BY q.id

是否可以按类型过滤问题,而无需多个连接到questions表?
输出是我可以根据type_id过滤得到每个问题的内容,即:

question | answer
Q1       | A1
Q3       | A1

这是针对type_id = 1的。我可以像这样按type_id筛选所有这些内容吗?这样我就可以知道哪些问题属于哪个type_id

xxhby3vn

xxhby3vn1#

您将需要使用连接,否则您将得到一个问题而没有答案。下面的查询如下所示,选择type_id为1的问题

SELECT 
    q.question 
FROM 
    questions q
WHERE
    q.type_id = 1

但是,您仍然可以将WHERE子句添加到当前语句中,这将过滤数据。下面的示例将再次获得所有问答,其中type_id为1

SELECT 
    q.type_id,
    q.question, 
    a.answer
FROM 
    questions q
    JOIN questions_answers qa 
        ON qa.question_id = q.id
    JOIN answers a 
        ON qa.answer_id = a.id
WHERE
    q.type_id = 1
ORDER BY
    q.type_id

相关问题