有很多 mysql 个查询

Has Many mysql query

我有一个包含用户 table 和答案 table 的数据库。每个用户有 30 个答案。我想在一行中导出用户及其所有答案。

例如:

ID  | email   | answer_1 | answer_2 | answer_3 | etc...
----|---------|----------|----------|----------|--------
1   | e@g.com |  foo     | bar      | baz      | ....  

我目前有

SELECT *
    FROM users
    LEFT JOIN answers AS A 
        ON users.id = A.user_id
    WHERE email IS NOT NULL

这为每位用户创建了 30 行,其中包含他们对每一行的回答。我如何将其分组为每个用户一行,每个答案一列?

您可以尝试使用数据透视查询,如下所示:

SELECT uid, email,
       MAX(CASE WHEN a.aid = 1 THEN a.answer END) AS answer_1,
       MAX(CASE WHEN a.aid = 2 THEN a.answer END) AS answer_2,
       MAX(CASE WHEN a.aid = 3 THEN a.answer END) AS answer_3
       -- add more CASE expressions to cover all 30 answers
FROM users u
LEFT JOIN answers a
    ON u.id = a.user_id
WHERE u.email IS NOT NULL
GROUP BY u.id, u.email

假设:answers table 有一个 id 列来标识和编号 30 个答案中的每一个。没有这个,查询可能会很痛苦。我还假设每个用户将恰好有 30 个答案。如果答案不存在,则缺失的答案将显示为 NULL