勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

MySQLに保存したデータをJSON形式で取得する方法

  MySQL データベース

MySQLに保存したデータをJSON形式で利用したいということがたまにある(JavaScript側でそのデータを使いたい時とか)。そのような場合はPHPのjson_encode関数でJSON形式に変換していた。ただSQL文で直接JSON形式指定できるらしい。以下に方法をメモ。

 

テーブル内容

+----+-----------+-----+---------------------+
| id | name      | age | regist              |
+----+-----------+-----+---------------------+
|  1 | 田中      |  20 | 2023-02-13 16:16:01 |
|  2 | 鈴木      |  30 | 2023-02-13 16:16:24 |
|  3 | 佐々木    |  40 | 2023-02-13 16:16:33 |
+----+-----------+-----+---------------------+

 

SQL文

SELECT
    JSON_PRETTY(
        JSON_OBJECTAGG(
            id, 
            JSON_OBJECT(
                'name', name, 
                'age', age,
                'regist', regist
            )
        )
    ) AS reslut 
FROM json_test;

 

以下が結果になる。

{
  "1": {
    "age": 20,
    "name": "田中",
    "regist": "2023-02-13 16:16:01.000000"
  },
  "2": {
    "age": 30,
    "name": "鈴木",
    "regist": "2023-02-13 16:16:24.000000"
  },
  "3": {
    "age": 40,
    "name": "佐々木",
    "regist": "2023-02-13 16:16:33.000000"
  }
}

 

所感

使いどころは限られそうだけど引き出しとして覚えておく。

 

参考サイト

https://www.wakuwakubank.com/posts/872-mysql-aggregate-json/

 - MySQL データベース

  関連記事

MySQLにてSELECT時にdate型のカラムから年齢を計算し取得する方法
MySQLにてSELECT時にdate型のカラムから年齢を計算し取得する方法

MySQLにdate型のカラムに誕生年月日が格納されており、そこから年齢を計算し ...

ON DUPLICATE KEY UPDATE後にinsert_idを取得すると結果が0になる
ON DUPLICATE KEY UPDATE後にinsert_idを取得すると結果が0になる

MySQLでON DUPLICATE KEY UPDATE句指定し、データの登録 ...

PLESK利用時にMySQLでrootのパスワードが分からない場合の対応方法
PLESK利用時にMySQLでrootのパスワードが分からない場合の対応方法

pleskで管理しているサーバがあり、mysqlのrootのパスワードが分からな ...

MySQLでdatetime型のカラムをdate型やtime型に変換して検索する方法
MySQLでdatetime型のカラムをdate型やtime型に変換して検索する方法

MySQLでdatetime型のカラムがあり、そちらをdate型やtime型に変 ...

phpMyAdminでのエクスポート/インポート
phpMyAdminでのエクスポート/インポート

DBのバックアップを取る際にエクスポート/インポートを行うが、 データ件数が多い ...