如何在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

回到顶部