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)