勉強したことのメモ

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でパターンマッチの逆

LIKE検索の逆ってなったのでメモ。 NOT LIKE '%あああ%' が正解み ...

InnoDBのオートインクリメントで抜け番が発生する原因について

MySQLのInnoDBでIDというカラムにオートインクリメント設定していたが、 ...

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

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

MySQLでユーザー作成時にエラーが発生

SSHからrootアカウントでMySQLにログインし、ユーザーを作成しようとする ...

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

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