GROUP_CONCAT
という便利な集約関数がMySQLにあって色々使えそうなので共有します。
例えばこんな感じテーブルshop_area
テーブルがあったとします。
shop_id | area_id |
---|---|
1 | 21 |
1 | 3 |
2 | 14 |
2 | 15 |
3 | 33 |
で、これをshop_idでGROUP BY
して下記のようなデータをSQL一発で取得可能です。
shop_id | area_list |
---|---|
1 | 21/3 |
2 | 14/15 |
3 | 33 |
SQLはこんな感じ
SELECT shop_id, GROUP_CONCAT(area_id separator '/') as area_list
FROM shop_area
GROUP BY shop_id;
area_id
が重複するような場合はGROUP_CONCAT(DISTINCT area_id separator '/')
のように、DISTINCTキーワードも使えます。