mysqlのgroup_concatについて

101125-mysql

どうも。

mysqlで便利な関数を発見したので、忘れぬうちに書いておきます。

group_concatという関数です。

これの使い方を簡単に説明します。

たとえば、user , user_characterという二つのテーブルがあったとします。

userテーブル———————-

user_id , name

1 , ほげ

2 , ふが

————————————-

user_character——————-

id , user_id , character

1 , 1 , 温厚

2 , 1 , 食いしん坊

3 , 1 , ハードコア好き

4 , 2 , キレ症

5 , 2 , メロコア好き

—————————————

こういう時に、リレーションを貼るとするとuser_idでリレーションを貼ることになりますが、

そうすると、user_characterテーブルから全ての性格を取得することが困難になります。

そんなときに、このgroup_concatを使用すると以下のことが可能になります。

以下SQL文

SELECT user.user_id, user.name, GROUP_CONCAT(user_character.character SEPARATOR '、') character_group
    FROM user
    JOIN user_character
        ON user.user_id = user_character.user_id;

これを実行すると以下のような結果が得られます。

——————————————————-

user_id , name , character_group

1 , ほげ , 温厚、食いしん坊、ハードコア好き

2 , ふが , キレ症、メロコア好き

——————————————————-

これは便利!

好きなセパレータを使用して、データをつなげて一覧で取得できます。

今回は「、」を使用しましたが、「,」など好きなものを使用できます。

たまにはSQL文でなんとかしようと頑張ってみるものですね。

それでは。

1件のコメント

Leave a Comment.