【发布时间】:2021-10-30 18:45:18
【问题描述】:
我有下表 -
+-----+-----------+--------------------------------------+
| id | client_id | service_values |
+-----+-----------+------------+-------------------------+
| 100 | 1000 | {"1": "60", "2": "64", "3": "92"} |
| 101 | 1000 | {"1": "66", "2": "64", "3": "92"} |
| 102 | 1000 | {"1": "70", "2": "64", "3": "92"} |
| 103 | 1001 | {"1": "60", "2": "54", "3": "92"} |
| 104 | 1001 | {"1": "90", "2": "64", "3": "92"} |
| 105 | 1002 | {"1": "80", "2": "64", "3": "92"} |
+-----+-----------+--------------------------------------+
我需要获取 service_values,其中 2 个或多个值小于 65。例如,根据上述记录,预期结果将是 -
+-----+-----------+--------------------------------------+
| id | client_id | service_values |
+-----+-----------+------------+-------------------------+
| 100 | 1000 | {"1": "60", "2": "64", "3": "92"} |
| 103 | 1001 | {"1": "60", "2": "54", "3": "92"} |
+-----+-----------+--------------------------------------+
我找到了很多,但找不到任何东西可以在 JSON 数据中执行聚合函数。
更新 - 我尝试了类似的方法但没有成功 -
SELECT JSON_UNQUOTE(JSON_EXTRACT(service_values,'$.1')) AS A1, JSON_UNQUOTE(JSON_EXTRACT(service_values,'$.2')) AS A2, JSON_UNQUOTE(JSON_EXTRACT(service_values,'$.3')) AS A3 FROM service_data HAVING A1 < 65 OR A2 < 65 OR A3 < 65
【问题讨论】:
-
什么是精确 MySQL版本?
-
感谢您的快速回复,我有“服务器版本:10.4.14-MariaDB - mariadb.org 二进制分发版”
标签: mysql sql mysql-json