我在MySQL中有表名为" temporarytransaction" ans" tbltransaction"
temporarytransaction和tbltransaction有3列名为"客户","服务呈现"和"日期"
所以例如临时交易有3个值
内森|男士剪裁| 2017年9月23日 内森|美甲| 2017年9月23日 内森|按摩| 2017年9月23日
我需要做的是合并或连接所提供的服务"在tbltransaction。 是否有可能在tbltransaction中保存它?
内森|男士剪裁,美甲,按摩| 2017年9月23日
我试过这个,但它并没有这样保存
INSERT INTO tbltransaction (customer,service,date) SELECT customer,service,date FROM temporarytransaction;";
答案 0 :(得分:2)
您可以使用group_concat
汇总service
值:
INSERT INTO tbltransaction (customer,service,date)
SELECT customer, GROUP_CONCAT(service SEPARATOR ','), date
FROM temporarytransaction
GROUP BY customer, date
答案 1 :(得分:1)
假设您的组列为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
系统变量给出的最大长度。
答案 2 :(得分:0)
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