この記事の例では、mysql group_concat() 関数の使用方法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
group_concat()、マニュアルには次のように記載されています: この関数は、グループからの接続からの NULL 以外の値を持つ 文字列 結果 を返します。比較的抽象的で理解しにくい。
簡単に理解すると、実際は次のようになります。 group_concat() は、同じグループに属する行を計算し、同じグループに属する列を表示します。どの列を返すかは、 関数パラメータ (フィールド名) によって決まります。 Group には、group by で指定された列に従ってグループ化するという標準が必要です。
group_concat 関数は内部で group by ステートメントを実行する必要があります。これは私の推測です。
1. テストステートメント:
SELECT group_concat(town) FROM `players` group by town
結果は、次のように、town 内のどの値が同じかを検索し、カンマで区切ってリストします。
北京、北京
長沙
2. テスト:
SELECT group_concat( town ) FROM players
group_concat(town)
長沙、北京、北京、
上記は、group_concat が次の場所でのみ使用できることを証明できますか? group by ステートメントと同時に結果を生成できますか? 以下は実際のテストです
3. group_concat() の構成に対する
constants の影響をテストします。設定は次のとおりです: SET @@GROUP_CONCAT_MAX_LEN=4
2 つのタイプの違いは何ですか?
SET [SESSION | GLOBAL] group_concat_max_len = val;
global は省略でき、その場合は次のようになります: SET @@GROUP_CONCAT_MAX_LEN=4;
SET @@global.GROUP_CONCAT_MAX_LEN=4;を使用します。結果は次のようになります:
group_concat(town)
Changsha,Beijing,Changsha,Beijing
その理由は次のように理解できます: group_concat() はグループ x に属するすべてのメンバーを取得します (関数内の列パラメーターはどのフィールドを表示する必要があるかを指定します)。グループXはどこから来たのですか?グループが指定されていない場合、 group_concat() がどのグループに従ってメンバーを表示するかを知る方法はありません。 したがって、上記のようなgroup by句がない場合は、長沙と北京が表示されます。
実際にこの機能を使用する必要があるのはどのような場合ですか?
クエリ結果が次のようになったとします。左側にグループ名が表示され、右側にグループのすべてのメンバー情報が表示されます。この機能を使うと色々なものを保存することができます。
さらに、次のように使用すると: SELECT group_concat( name, sex ) FROM `players` town。それは意味がありません。 group_concat() で列を指定するのが最良のケースです。複数の列が指定されている場合。すると、表示される結果は次のようになります:
SELECT group_concat(town) FROM `players`
以上がmysql での group_concat() 関数の使用方法のまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。