MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでキーと値のペア形式のレコードを表示する方法|JSON_OBJECTAGGの使い方

JSON_OBJECTAGG()とは

MySQLでレコードをキーと値のペア形式で表示したい場合には、集計関数「JSON_OBJECTAGG()」を使用します。この関数を使うと、GROUP BYでグループ化した行をもとに、指定したカラムをキー、別のカラムを値とするJSONオブジェクトを生成できます。

ここでは、サンプルテーブルを作成し、実際にJSON_OBJECTAGG()を使ってキーと値のペア形式でレコードを表示するまでの手順を解説します。

1. サンプルテーブルを作成する

まず、以下のコマンドでテーブルを作成します。

mysql> create table DemoTable
(
    Id int,
    FirstName varchar(100),
    Age int
);
Query OK, 0 rows affected (0.56 sec)

2. レコードを挿入する

INSERT文を使って、テーブルに複数のレコードを追加します。

mysql> insert into DemoTable values(10,'John',23);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values(20,'Carol',21);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(10,'Sam',24);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(20,'Chris',20);
Query OK, 1 row affected (0.13 sec)

3. テーブルの全レコードを確認する

SELECT文で、テーブル内のすべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

実行結果は以下の通りです。

+------+-----------+------+
| Id   | FirstName | Age  |
+------+-----------+------+
|   10 | John      |   23 |
|   20 | Carol     |   21 |
|   10 | Sam       |   24 |
|   20 | Chris     |   20 |
+------+-----------+------+
4 rows in set (0.00 sec)

4. JSON_OBJECTAGG()でキーと値のペアとして表示する

次のクエリでは、JSON_OBJECTAGG()を使用して、Idごとに「FirstNameをキー、Ageを値」とするJSONオブジェクトを生成しています。

mysql> select Id,JSON_OBJECTAGG(FirstName,Age) from DemoTable GROUP BY Id;

実行結果は以下の通りです。同じIdを持つ複数のレコードが、キーと値のペアを持つ単一のJSONオブジェクトにまとめられていることがわかります。

+------+-------------------------------+
| Id   | JSON_OBJECTAGG(FirstName,Age) |
+------+-------------------------------+
|   10 | {"Sam": 24, "John": 23}       |
|   20 | {"Carol": 21, "Chris": 20}    |
+------+-------------------------------+
2 rows in set (0.07 sec)

まとめ

このように、JSON_OBJECTAGG()を使えば、グループごとのデータを簡単にキーと値のペア形式のJSONオブジェクトとして取得できます。APIレスポンスの生成やデータの集約処理など、さまざまな場面で活用できる便利な関数なので、ぜひ覚えておきましょう。

  1. MySQLのGROUP BY句で日付をグループ化してレコードを表示する方法

    MySQLで日付をグループ化する基本 MySQLで日付データをグループ化してレコードを表示するには、GROUP BY句を使用します。この記事では、顧客ごとに出荷日の最小値と最大値を取得する例を通じて、GROUP BY句の使い方を詳しく解説します。 1. サンプルテーブルの作成 まず、顧客名と出荷日を格納するテーブルを作成します。 mysql> create table DemoTable2002 ( CustomerName varchar(20), CustomerShippingDate datetime ); Query OK, 0 rows affected (

  2. MySQLでTRUE/FALSEのレコードを0/1として表示する方法

    MySQLでTRUE/FALSEのレコードを0/1として表示する方法MySQLでは、カラムのデータ型をBOOLEANとして定義することで、TRUE/FALSEの値が自動的に0と1として表示されます。BOOLEAN型は内部的にはTINYINT(1)のエイリアスであり、TRUEは1、FALSEは0として扱われます。以下、具体的な手順を解説します。1. テーブルの作成まず、BOOLEAN型のカラムを含むテーブルを作成しましょう。mysql> create table DemoTable2035     -> (