MySQL 8.0.29でwhereとgroup条件を使用してJSON型のデータを抽出する

環境
Ubuntu 22.04 LTS
MySQL 8.0.29-0ubuntu0.22.04.2

使用例1
書式
SELECT * FROM `テーブル名` WHERE `col`->"$.options.x" = 値;
JSONデータに含まれるデータをwhere条件にレコードを抽出します.

実行結果

mysql>  SELECT * FROM `json_userstbl` WHERE `col`->"$.options.x" = 300;
+-----------------------------------------------------+
| col                                                 |
+-----------------------------------------------------+
| {"flg": 0, "name": "user22", "options": {"x": 300}} |
+-----------------------------------------------------+
1 row in set (0.01 sec)

使用例2
書式
SELECT `col`->"$.列名" as 列名, COUNT(*) FROM `テーブル名` GROUP BY 列名;
group byを利用してJSONデータに含まれるデータでレコードを集計します。
実行結果

mysql>  SELECT `col`->"$.flg" as flg, COUNT(*) FROM `json_userstbl` GROUP BY flg;
+------+----------+
| flg  | COUNT(*) |
+------+----------+
| 1    |        2 |
| 0    |        1 |
+------+----------+
2 rows in set (0.08 sec)

 

MySQL

Posted by arkgame