如何计算mysql中的json项目

Posted

技术标签:

【中文标题】如何计算mysql中的json项目【英文标题】:How to count json items in mysql 【发布时间】:2018-02-08 12:16:11 【问题描述】:

我有餐桌频道:

+----+----------------+---------+
| id | sort           | bouquet |
+----+----------------+---------+
|  1 | ["2","3","73"] | ["1"]   |
| 12 | ["3","73"]     | ["28"]  |
+----+----------------+---------+

并且需要为特定的花束在排序字段中获取计数项目...例如:

花束 1 有 3 个排序项 花束 12 有 2 个分类项目

我尝试在 mysql 中使用此查询,但我不知道如何计算排序字段中的项目数:

SELECT COUNT(sort) AS total_channels 
FROM channels 
WHERE JSON_SEARCH(bouquet, 'one', "1") IS NOT NULL;

我总是得到:

+----------------+
| total_channels |
+----------------+
|              1 |
+----------------+

这是不正确的。

【问题讨论】:

你读过JSON_LENGTH()吗? 使用 SELECT JSON_LENGTH(bouquet) FROM 频道;结果我得到 1 那就试试SELECT JSON_LENGTH(sort) FROM channels; 是的,我忘了放排序,现在它返回正确的计数值,但你能在这里写下如何放 WHERE 花束 =“1”吗? bouqet 是 json 类型 ["1"] 所以我不能使用花束="1" 还有另一个函数 JSON_DEPTH() .... 看看是否有帮助。 【参考方案1】:

使用上面的帮助我得出了这个结论:

SELECT JSON_LENGTH(sort) FROM channels WHERE bouquet='["1"]';

我得到正确的计数:

mysql> SELECT JSON_LENGTH(sort) FROM channels WHERE bouquet='["28"]';
+-------------------+
| JSON_LENGTH(sort) |
+-------------------+
|                 2 |
+-------------------+
1 row in set (0.00 sec)

【讨论】:

以上是关于如何计算mysql中的json项目的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 id 在 MySQL 中的 json 整数数组列中获取相关项目

查询获取上个月数据(从现在开始计算)并解析 Json 以获取 Json 中的项目

如何使用 AND 查询 MYSQL 中的 JSON 数组

如何在 MySQL 中的 json 列上创建索引?

如何计算 MySqlDataReader 中的行数?

mysql数据库中某个字段存的是json数据,如何对json数据中的数据进行操作?