メインコンテンツまでスキップ
バージョン: 3.2

array_unique_agg

説明

ARRAY列の異なる値(NULLを含む)を集約して、配列にまとめます(複数行から1行に)。

この関数はv3.2からサポートされています。

構文

ARRAY_UNIQUE_AGG(col)

パラメータ

  • col: 集約したい列の値。サポートされているデータ型はARRAYです。

戻り値

ARRAY型の値を返します。

使用上の注意

  • 配列内の要素の順序はランダムです。
  • 返される配列内の要素のデータ型は、入力列の要素のデータ型と同じです。
  • 一致する値がない場合はNULLを返します。

以下のデータテーブルを例にとります。

mysql > select * from array_unique_agg_example;
+------+--------------+
| a | b |
+------+--------------+
| 2 | [1,null,2,4] |
| 2 | [1,null,3] |
| 1 | [1,1,2,3] |
| 1 | [2,3,4] |
+------+--------------+

例1: 列aの値をグループ化し、列bの異なる値を配列に集約します。

mysql > select a, array_unique_agg(b) from array_unique_agg_example group by a;
+------+---------------------+
| a | array_unique_agg(b) |
+------+---------------------+
| 1 | [4,1,2,3] |
| 2 | [4,1,2,3,null] |
+------+---------------------+

例2: WHERE句を使用して列bの値を集約します。フィルター条件に合致するデータがない場合、NULL値が返されます。

mysql > select array_unique_agg(b) from array_unique_agg_example where a < 0;
+---------------------+
| array_unique_agg(b) |
+---------------------+
| NULL |
+---------------------+

キーワード

ARRAY_UNIQUE_AGG, ARRAY