GROUP_CONCAT ; MySQL
目的
- GROUP_CONCAT 関数の概要と使い方を知ること
1-0. どのような関数か
1-1. テーブルとコマンドを見つつ知る
どのような関数か
複数レコードを一行にまとめる
テーブルとコマンドを見つつ知る
次のテーブルが用意されている。
hand(持ち物)テーブル
id | user_id | name |
---|---|---|
1 | 1 | pen |
2 | 1 | book_PHP |
3 | 2 | book_MySQL |
4 | 2 | laptop |
5 | 2 | CD_Audio |
6 | 2 | Keyboard |
7 | 1 | Card_Credit |
8 | 1 | Card_Trump |
9 | 2 | Eraser |
10 | 2 | Bag |
11 | 1 | Wallet |
12 | 2 | Vegetable |
ここから、user_id = 1 に対応する name の集合を手に入れる。
イメージは
user_id | user_id = 1 に対応した name の集合 |
---|---|
1 | pen,book_PHP,Card_Credit,Card_Trump,Wallet |
mysql> SELECT user_id, group_concat(name) FROM hand WHERE user_id = 1; +---------+--------------------------------------------+ | user_id | group_concat(name) | +---------+--------------------------------------------+ | 1 | pen,book_PHP,Card_Credit,Card_Trump,Wallet | +---------+--------------------------------------------+ 1 row in set (0.01 sec)
order by OK
mysql> SELECT user_id, group_concat(name order by name) FROM hand WHERE user_id = 1; +---------+--------------------------------------------+ | user_id | group_concat(name order by name) | +---------+--------------------------------------------+ | 1 | book_PHP,Card_Credit,Card_Trump,pen,Wallet | +---------+--------------------------------------------+ 1 row in set (0.00 sec)
order by desc OK
mysql> SELECT user_id, group_concat(name order by name desc) FROM hand WHERE user_id = 1; +---------+--------------------------------------------+ | user_id | group_concat(name order by name desc) | +---------+--------------------------------------------+ | 1 | Wallet,pen,Card_Trump,Card_Credit,book_PHP | +---------+--------------------------------------------+ 1 row in set (0.00 sec)
distinct OK(レコード間に重複がないので結果は割愛)
SELECT user_id, group_concat(distinct name) FROM hand WHERE user_id = 1;
テーブル用意までのソースコード
CREATE TABLE hand ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, name CHAR(255) NOT NULL ); INSERT INTO hand (user_id, name) VALUES (1, 'pen' ), (1, 'book_PHP' ), (2, 'book_MySQL'), (2, 'laptop' ), (2, 'CD_Audio' ), (2, 'Keyboard' ), (1, 'Card_Credit'), (1, 'Card_Trump'), (2, 'Eraser' ), (2, 'Bag' ), (1, 'Wallet' ), (2, 'Vegetable');
引用元
treeのメモ帳 GROUP_CONCATのコマンドとコード # 勉強になります