説明
この関数は、2つの列名または式を引数として受け取り、1つ目をキー、2つ目を値として、キーと値のペアからなるJSONオブジェクトを返します。
構文
JSON_OBJECTAGG(key, value) [over_clause]
説明
key, value はキーと値のペアを表します。結果に行が含まれない場合、またはエラーが発生した場合は、NULL を返します。いずれかのキー名が NULL である場合、またはパラメータ数が2と等しくない場合は、エラーが発生します。
JSONテキストの仕様により、オブジェクト内に重複したキーを持つことはできないため、重複するキーは1つにまとめられます。 集約処理は行単位で順次実行されるため、重複するキーがある場合は最後に処理された値が保持されます。 また、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