2014-01-15 73 views
0

我有一個表像這樣:MySQL的合併單元格,其中行復制

Name   | Note    | 
-------------------------------------- 
John Doe  | Smells like cheese | 
Kelly Smith | Smells like ham  | 
Richmond White | Smells like apples | 
John Doe  | Sounds like trumpet | 
Kelly Smith | sounds like tuba | 

,我發現我的答案的一部分,在這裏:delete duplicated row and merge cell value mysql,但只返回數據的第二列中第一次出現。我需要拼接它像這樣:

Name   | Note    | 
-------------------------------------- 
John Doe  | Smells like cheese | 
       | Sounds like trumpet | 
-------------------------------------- 
Kelly Smith | Smells like apples | 
       | Sounds like Tuba | 
-------------------------------------- 

Furthemore,我想保持換行符在「註釋」列。

在此先感謝您的任何見解!

回答

2

可以使用GROUP_CONCAT()字符串聚集這樣

SELECT name, GROUP_CONCAT(Note) note 
    FROM table1 
GROUP BY name 

這將產生以下輸出:

 
+----------------+----------------------------------------+ 
| name   | note         | 
+----------------+----------------------------------------+ 
| John Doe  | Smells like cheese,Sounds like trumpet | 
| Kelly Smith | Smells like ham,sounds like tuba  | 
| Richmond White | Smells like apples      | 
+----------------+----------------------------------------+ 

這裏是SQLFiddle演示


此外,我想保留'note'列中的換行符。

這是一個介紹問題,應該在您的客戶端代碼中完成。例如在php中,當迭代結果集併發出正確的換行符時(如果它處於文本模式下,它可能是\n</br>或表中的單獨單元格,或者div或其他東西,如果它是HTML的,則可以使用explode()note10列值輸出)。

但是,如果你想給你改變一個分隔符不是逗號(例如,以\n)其他任何你能與SEPARATOR條款

GROUP_CONCAT(Note SEPARATOR '\n') 
+0

做謝謝你的解釋! SEPERATOR子句很棒,因爲我想編輯插件輸出的數據,而不影響插件代碼本身。 – psorensen

+0

非常歡迎。祝你好運 :) – peterm

相關問題