説明
この関数は、2つの列名または式をパラメータとして受け取り、最初のものをキー、2番目のものを値として使用し、キーと値のペアを含むJSONオブジェクトを返します。
構文
JSON_OBJECTAGG(key, value) [over_clause]
説明
key, value はキーと値のペアを表します。結果に行が含まれない場合、またはエラーが発生した場合は、NULL を返します。いずれかのキー名が NULL であるか、パラメータ数が2と等しくない場合は、エラーが発生します。
JSONテキストの要件により、オブジェクト内に重複するキーと値を含めることはできません。そのため、重複するキーと値は削除されます。集約操作の仕組みにより 結果セットは行ごとに処理されるため、最後の重複キーの値は保持されますが、SELECT ステートメントでは 返されるデータ行は無秩序である可能性があるため、最終的にどの value が保持されるかは、データの返却順序に依存します。
注意
この関数は、ウィンドウ関数、すなわちOVER句を現在サポートしていません。
例
obclient> SELECT oid, JSON_OBJECTAGG(attr, value) AS attributes FROM tbl1 GROUP BY oid;
+------+---------------------------------------+
| oid | attributes |
+------+---------------------------------------+
| 2 | {"color": "red", "fabric": "silk"} |
| 3 | {"color": "green", "shape": "square"} |
+------+---------------------------------------+
2 rows in set
obclient> CREATE TABLE tbl2(c VARCHAR(10), i INT);
Query OK, 0 rows affected
obclient> INSERT INTO tbl2 VALUES ('key', 3), ('key', 4), ('key', 5);
Query OK, 3 rows affected
Records: 3 Duplicates: 0 Warnings: 0
obclient> SELECT c, i FROM tbl2;
+------+------+
| c | i |
+------+------+
| key | 3 |
| key | 4 |
| key | 5 |
+------+------+
3 rows in set
obclient> SELECT JSON_OBJECTAGG(c, i) FROM tbl2;
+----------------------+
| JSON_OBJECTAGG(c, i) |
+----------------------+
| {"key": 5} |
+----------------------+
1 row in set