我們在使用 MySQL 時也常常會使用 Group By 功能把相同的資料整合出來,然後 Count 出結果的數目。 ##### Table : people |id|name|sex| |---| |1|Peter|M| |2|Mary|F| |3|Tom|M| |4|Betty|F| |5|Flex|M| |6|Alex|M| ### 使用 count() Count 是其中一個在 SQL 裏常用的功能,以下的 statement 可以抽出整個資料表的記錄數量。 ```sql select count(*) as count from people ``` |count| |---| |6| 如能配合 Group By 使用的話,就可以抽出每一個組別的記錄數量 : ```sql select count(id) as count, sex from people group by sex ``` |count|sex| |---| |4|M| |2|F| ### 使用 group_concat() 如果使用 group_concat 功能的話,就可以把欄位的值 group 起來在一格欄位轉輸出了。下面是例子 ```sql select count(id) as count, group_concat(id) as ids, sex from people group by sex ``` |count|ids|sex| |---| |4|1,3,5,6|M| |2|2,4|F| ### 自訂分隔符號 逗號 (Comma) 是預設的分隔符號,如果想自訂分隔符號可以使用 `separator` 語法。 ```sql select count(id) as count, group_concat(id separator '+') as ids, sex from people group by sex ``` |count|ids|sex| |---| |4|1+3+5+6|M| |2|2+4|F| ### 不重覆記錄 如果想 group 起來的記錄不要重覆,可以使用 `distinct` 語法。 ```sql select count(id) as count, group_concat(distinct id separator '+') as ids, sex from people group by sex ``` 這樣就可以保證抽出來的記錄不會重覆了。