この記事の例では、mysql group_concat() 関数の使用法を説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
group_concat()、マニュアルには次のように記載されています: この関数は、グループの連結から NULL 以外の値を含む文字列結果 を返します。比較的抽象的で理解しにくい。
簡単に理解すると、実際は次のようになります。 group_concat() は、どの行が同じグループに属しているかを計算し、同じグループに属している列を表示します。どの列を返すかは、関数のパラメーター (フィールド名) によって決まります。グループ化には、group by で指定された列に従ってグループ化するという基準が必要です。
group_concat 関数は内部で group by ステートメントを実行する必要があります。これは私の推測です。
1. テストステートメント:
リーリー
その結果、町を検索して同じ値を見つけます。同じ場合は、次のようにすべてをカンマで区切ってリストします。
グループコンキャット(町)
長沙
2. テスト:
リーリー結果:
グループコンキャット(町)
長沙、北京、北京、
上記は、group_concat が group by ステートメントと一緒に使用された場合にのみ効果があることを証明できますか? 以下で実際のテストが行われます
3. group_concat() の設定に対するテスト定数の影響:
リーリーマニュアルに記載されている構文は次のとおりです:
リーリー
この2つの違いは何ですか?
リーリー
global は省略でき、その場合は次のようになります: SET @@GROUP_CONCAT_MAX_LEN=4;
4. ステートメントを使用する
リーリー
結果は次のとおりです:
group_concat(街)
結論: 必要な効果を得るには、group_concat() 関数を group by ステートメントと一緒に使用する必要があります。
その理由は次のように理解できます: group_concat() はグループ x に属するすべてのメンバーを取得します (関数内の列パラメーターは、どのフィールドを表示する必要があるかを指定します)。グループXはどこから来たのですか?グループが指定されていない場合、 group_concat() がどのグループに従ってメンバーを表示するかを知る方法はありません。 したがって、上記のようなgroup by句がない場合は、長沙と北京が表示されます。
実際にこの機能を使用する必要があるのはどのような場合ですか?
クエリ結果が次のようになったとします。左側にグループ名が表示され、右側にグループのすべてのメンバー情報が表示されます。この機能を使うと色々なものを保存することができます。また、次のように使用すると: SELECT group_concat( name, sex ) FROM `players` town。それは意味がありません。 group_concat() で列を指定するのが最良のケースです。複数の列を指定した場合。表示される結果は次のようになります:
リーリー
Wang Tao、Wang Xiaoming 男性、Liu Hui 女性、Shu Ming 女性
さらに MySQL 関連のコンテンツに興味のある読者は、このサイトの特別トピックをチェックしてください:「MySQL ログ操作スキルの包括的なコレクション」、「MySQL トランザクション操作スキルの概要」、「MySQL ストアド プロシージャ スキルの包括的なコレクション」、 『MySQLデータベースロック関連スキルまとめ』と『MySQLでよく使う機能まとめ』
この記事が皆さんの MySQL データベース計画に役立つことを願っています。