如何在mysql中统计json数组中某些值的计数?
如何在mysql中统计json数组中某些值的计数?
json数据如下:类型是json
我想统计比如一个集合中:{"3467562849402896", "3467562861985809","3465044211793921"}的每个元素被使用了几次?上述集合中的元素个数是不固定的,是输入的参数
方案:
我知道mysql8的JSON_TABLE是可以的,但是我的版本是5.7
我想到一个方案是这个:先用下面的sql找出来谁用了这个id,然后在代码中处理统计次数
where JSON_CONTAINS(tags ,'"3467562849402896"' , '$') OR JSON_CONTAINS(tags, '"3467562861985809"', '$')
OR JSON_CONTAINS(tags, '"3465044211793921"', '$');
还没有更好的方案呢?
回答:
- 因为要
每个元素
,OR 的只能查到 一共 有多少行 有交集
SELECT count( JSON_SEARCH( tags, 'one', "3467562849402896" ) ),
count( JSON_SEARCH( tags, 'one', "3467562861985809" ) ),
count( JSON_SEARCH( tags, 'one', "3465044211793921" ) )
FROM
XXXXXXXXXX
回答:
找到了另外的一个解决办法:行转列
SELECT TRIM(BOTH '"' FROM JSON_EXTRACT(t1.name_s, CONCAT('$[',h.help_topic_id,']'))) AS `name`
FROM (
SELECT
JSON_EXTRACT(tags, '$[*]' ) AS name_s
FROM xxxx
) AS t1
JOIN mysql.help_topic AS h ON h.help_topic_id < JSON_LENGTH(t1.name_s);
参考文章:https://blog.csdn.net/u011123972/article/details/132321483
以上是 如何在mysql中统计json数组中某些值的计数? 的全部内容, 来源链接: utcz.com/p/945521.html