【问题标题】:Merge multiple mysql rows having same id合并多个具有相同id的mysql行
【发布时间】:2023-03-08 19:55:01
【问题描述】:

我有一张这样的桌子:

id  employee_id contract_id      month    year    d1     d2      d3
1          25        1                11     2011    1      01      01
2          16        5                11     2011    1      11      0
3          29        3                11     2011    1      001     100
1          25        4                11     2011    0      11      011

假设我需要 month='11' AND year='2011' 的数据,那么对于具有相同 'employee_id' 的所有行,数据应该像这样合并:

id  employee_id contract_id      month    year    d1     d2      d3
1          25        1,4            11       2011    1,0    01,11   01,011
2          16        5              11       2011    1      11      0
3          29        3              11       2011    1      001     100

我正在尝试使用 GROUP_CONCAT,但无法弄清楚查询。请帮忙。

【问题讨论】:

    标签: mysql join merge rows


    【解决方案1】:
       SELECT *, 
           GROUP_CONCAT(`d2`) as `d2`, 
           GROUP_CONCAT(`d3`) as `d3`, 
           GROUP_CONCAT(`contract_id`) as contract_id 
       FROM table WHERE month='11' AND year='2011' GROUP BY employee_id;
    

    【讨论】:

      【解决方案2】:
      SELECT
          id,
          employee_id,
          GROUP_CONCAT(contract_id SEPARATOR ',') AS contract_ids,
          `month`,
          `year`,
          GROUP_CONCAT(d1 SEPARATOR ',') AS d1s,
          GROUP_CONCAT(d2 SEPARATOR ',') AS d2s,
          GROUP_CONCAT(d3 SEPARATOR ',') AS d3s
      FROM
          `table`
      WHERE
          `month` = 11 AND `year` = 2011
      GROUP BY
          employee_id
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-14
        • 1970-01-01
        • 1970-01-01
        • 2016-12-27
        相关资源
        最近更新 更多