【问题标题】:Joining multiple rows with same ID in one将具有相同 ID 的多行合并为一个
【发布时间】:2020-09-07 13:45:40
【问题描述】:

我遇到了 SQL 查询问题。我有两张桌子。

我的第一张桌子:

+------------+-------------+---------------+
| id_mission | Some column | Other column  |
+------------+-------------+---------------+
|      1     |     ...     |      ...      |
|      2     |     ...     |      ...      |
+------------+-------------+---------------+

我的第二张桌子:

+------------+-------------+---------+
| id_mission | id_category | points  |
+------------+-------------+---------+
|          1 |           1 |       3 |
|          1 |           2 |       4 |
|          1 |           3 |       4 |
|          1 |           4 |       8 |
|          2 |           1 |      -4 |
|          2 |           2 |       3 |
|          2 |           3 |       1 |
|          2 |           4 |      -7 |
+------------+-------------+---------+

我想通过我的SELECT 请求得到这种结果

+------------+-------------+--------------+---------------+----------------+
| id_mission | Some column | Other column | id_category 1 | id_category X  |
+------------+-------------+--------------+---------------+----------------+
|          1 |         ... |          ... |           ... |            ... |
|          2 |         ... |          ... |           ... |            ... |
+------------+-------------+--------------+---------------+----------------+

我已经在前两列尝试过,但它不起作用,我也尝试过GROUP_CONCAT,它有效但不是我想要的结果。

SELECT m.id_mission ,mc.id_category 1,mc1.id_category 2
from mission m 
left join mission_category mc on m.id_mission = mc.id_mission 
left join mission_category mc1 on m.id_mission = mc1.id_mission

有人可以帮我吗?

【问题讨论】:

  • 您对结果集的描述与第一个表相同。需要更多细节和解释。
  • thta 是一个简单的示例,如何构建数据透视表stackoverflow.com/a/62712027/5193536 如果您需要帮助,您必须提供示例数据而不仅仅是----

标签: mysql sql join pivot


【解决方案1】:

您可以使用条件聚合。假设您要旋转每个类别的 points 值:

select 
    t1.*,
    max(case when t2.id_category = 1 then points end) category_1,
    max(case when t2.id_category = 2 then points end) category_2,
    max(case when t2.id_category = 3 then points end) category_3
from t1
inner join t2 on t2.id_mission = t1.id_mission
group by t1.id_mission
    

这假定id_missiont1 的主键(否则,您需要在selectgroup by 子句中枚举所需的列)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-19
    • 2023-03-08
    • 2013-05-24
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    相关资源
    最近更新 更多