【问题标题】:How can I merge 2 or more similar mysql row?如何合并 2 个或更多类似的 mysql 行?
【发布时间】:2017-09-22 16:42:12
【问题描述】:

我在 MySQL 中有名为“temporarytransaction”和“tbltransaction”的表

temporarytransaction 和 tbltransaction 有 3 列,分别命名为“客户”、“提供的服务”和“日期”

例如,temporarytransaction 有 3 个值

内森 |男士剪裁 | 2017-09-23

内森 |美甲 | 2017-09-23

内森 |按摩 | 2017-09-23

我需要做的是合并或连接 tbltransaction 中的“服务呈现”。 在tbltransaction中可以这样保存吗?

内森 |男士剪裁、美甲、按摩 | 2017-09-23

我试过这个,但它没有那样保存

INSERT INTO tbltransaction (customer,service,date) SELECT customer,service,date FROM temporarytransaction;";

【问题讨论】:

  • Mureinik 的回答是正确的,但我想将链接添加到GROUP_CONCAT documentation。您甚至可以安排您只看到 distinct 服务或以升序或降序对连接字符串中的服务进行排序。

标签: mysql sql database sql-insert


【解决方案1】:

您可以将service 值与group_concat 聚合:

INSERT INTO tbltransaction (customer,service,date)
SELECT      customer, GROUP_CONCAT(service SEPARATOR ','), date 
FROM        temporarytransaction
GROUP BY    customer, date

【讨论】:

    【解决方案2】:

    假设您的组列是customer,您可以执行以下查询:

    INSERT INTO `tbltransaction` (`customer`, `service`, `date`)
    SELECT
      `temporarytransaction`.`customer`,
      GROUP_CONCAT(
        DISTINCT `temporarytransaction`.`service`
        ORDER BY `temporarytransaction`.`service`
      ) `service`,
      GROUP_CONCAT(
        DISTINCT `temporarytransaction`.`date`
        ORDER BY `temporarytransaction`.`date`
      ) `date`
    FROM (
      SELECT 'Nathan' `customer`,
             'Men\'s Cut' `service`,
             '2017-09-23' `date`
      UNION ALL
      SELECT 'Nathan',
             'Nail Art',
             '2017-09-23'
      UNION ALL
      SELECT 'Nathan',
             'Massage',
             '2017-09-23'
    ) `temporarytransaction`
    GROUP BY
      `temporarytransaction`.`customer`;
    

    db-fiddle

    请记住,结果将被截断为group_concat_max_len 系统变量给出的最大长度。

    【讨论】:

      【解决方案3】:
      SELECT tt.customer,(SELECT GROUP_CONCAT( tt1.service) FROM temporarytransaction tt1 WHERE  tt1.customer=tt.customer AND tt1.date=tt.date) AS service, tt.date FROM temporarytransaction tt GROUP BY tt.customer, tt.date
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-07
        相关资源
        最近更新 更多