ホームページ >データベース >mysql チュートリアル >MySQL で Oracle の LISTAGG のようなカンマ区切りの文字列リストを作成するにはどうすればよいですか?
MySQL でのリスト生成のための集計関数 (Oracle の LISTAGG と同様)
MySQL で集計関数を扱う場合、共通の要件は次のとおりです。グループ化された値のリストを返します。 Oracle では、LISTAGG 関数がこの目的を効果的に果たします。 MySQL は、同様の結果を達成する代替ソリューションを提供します。
問題の理解
当面のタスクには、に保存されているデータから文字列のリストを生成する関数の作成が含まれます。テーブル。各文字列はカンマで区切る必要があります。たとえば、テーブルに次のデータが含まれている場合:
Id | MyString |
---|---|
1 | First |
2 | Second |
3 | Third |
4 | Fourth |
4 未満の ID をフィルタリングすると、Oracle の LISTAGG 関数に似た目的の出力は次のようになります:
myList |
---|
First, Second, Third |
解決策: GROUP_CONCAT()
MySQL が提供するGROUP_CONCAT() 集計関数は、複数の値を 1 つの文字列に結合するための強力なツールです。構文は簡単です:
GROUP_CONCAT(MyString SEPARATOR ', ') AS myList
この関数を指定されたフィルタリング基準でテーブルに適用すると、目的の文字列リストを簡単に取得できます。
たとえば、次のクエリは次のようになります。以下の ID の MyString 値のカンマ区切りリストを生成します。 4:
SELECT GROUP_CONCAT(MyString SEPARATOR ', ') AS myList FROM table WHERE id < 4
さらなる汎用性
GROUP_CONCAT() 関数を使用すると、他の基準に基づいて結果をグループ化できるため、さらなる汎用性が得られます。たとえば、クエリを変更して、カテゴリ フィールドなどの別の列で結果をグループ化できます。
SELECT category, GROUP_CONCAT(MyString SEPARATOR ', ') AS myList FROM table GROUP BY category
この拡張機能により、より複雑でカスタマイズされたリスト生成シナリオを作成できます。 GROUP_CONCAT() 関数を活用することで、MySQL は、Oracle の LISTAGG の機能に匹敵する、集計とリスト生成のための堅牢なソリューションを提供します。
以上がMySQL で Oracle の LISTAGG のようなカンマ区切りの文字列リストを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。