在 MySQL 上經常遇到如下的資料:
id value 1 A 1 B 1 C 2 A 2 C
這種情況在要輸出報表的時候就覺得很麻煩,一旦 Group By 起來,就失去了 value 的內容。不想丟失 value 的內容也不想出現多筆重複的 id 就得多下幾次 sql 才能取得完整的資料。
今天又是一個偶然在 StackOverflow 上看到 GROUP_CONCAT() 這個沒見過的指令,馬上試試有什麼效果。
SELECT id, GROUP_CONCAT(value) as values FROM table GROUP BY id ORDER BY id
就能得到以下的結果:
id=1, values=A,B,C
id=2, values=A,C
神方便啊,在 MySQL 的文件中有完整的 GROUP_CONCAT 用法,包括可以排序,改變分隔符號。例如:
SELECT id, GROUP_CONCAT(value ORDER BY value DESC SEPARATOR ': ') as values FROM table GROUP BY id ORDER BY id
結果就變這樣:
id=1, values=C: B: A
id=2, values=C: A
製作報表就靠它了。
Leave a Reply