2017-09-22 15 views
1

私は、MySQLでのテーブルのテーブルは3列は「顧客」と命名しました「temporarytransaction」ANS「tbltransaction」2つ以上の同様のmysql行をどのようにマージできますか?

temporarytransactionとtbltransactionという名前の「サービスレンダリング」とtemporarytransactionは、3つの値を持っているので、例えば、「日付」

を持っています

Nathan |メンズカット| 2017-09-23

Nathan |ネイルアート| 2017-09-23

Nathan |マッサージ| 2017-09-23

私がする必要があるのは、tbltransactionで "レンダリングされた"サービスをマージまたは連結することです。 これをtbltransactionに保存することは可能ですか?

Nathan |メンズカット、ネイルアート、マッサージ| 2017年9月23日

私はこれを試してみたが、それはあなたがgroup_concatservice値を集計でき、そのよう

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

Mureinikの回答は正しいですが、[GROUP_CONCAT documentation](https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#)へのリンクを追加したいと思います。 function_group-concat)。あなたは* distinct *サービスだけを見たり、連結された文字列のサービスを昇順または降順に並べたりすることもできます。 – Binarus

答えて

2

を保存しませんでした:

と仮定すると、
INSERT INTO tbltransaction (customer,service,date) 
SELECT  customer, GROUP_CONCAT(service SEPARATOR ','), date 
FROM  temporarytransaction 
GROUP BY customer, date 
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 
+0

これは質問に対する答えを提供しません。十分な[評判](https://stackoverflow.com/help/whats-reputation)があれば、[投稿にコメントする]ことができます(https://stackoverflow.com/help/privileges/comment)。代わりに、[質問者からの明確化を必要としない回答を提供する](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- i-do-代わりに)。 - [レビューの投稿](/レビュー/低品質の投稿/ 17417738) – Annjawn

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システム変数で指定された最大長に切り捨てられます。

関連する問題