简体   繁体   English

如何从 MySQL 中的 JSON 对象中提取数组值

[英]How to extract Array values from JSON Object in MySQL

I'm trying to extract values from Array in JSON object, get the most repeated values and order it.我正在尝试从 JSON 对象中的 Array 中提取值,获取重复次数最多的值并对其进行排序。

My column tags have next object: {"en":["polytics","friendly"]}我的列tags有下一个对象: {"en":["polytics","friendly"]}

For example: I have many rows with this data, the object "en" have an array with many values, and I'm trying to extract from all rows the array values and order it by most repeated.例如:我有很多行包含这些数据,对象“en”有一个包含很多值的数组,我试图从所有行中提取数组值并按最重复的顺序对其进行排序。

How is the sql query? sql查询是怎样的? Any help?有什么帮助吗? Thanks.谢谢。

Since you are using MySQL 5.7, you don't have support for the JSON_TABLE() function, which would be the solution for the query you describe.由于您使用的是 MySQL 5.7,因此您不支持 JSON_TABLE() 函数,这将是您描述的查询的解决方案。

SELECT j.tag, COUNT(*) AS count
FROM mytable CROSS JOIN 
JSON_TABLE(tags, '$.en[*]' COLUMNS(tag VARCHAR(10) PATH '$.') AS j
GROUP BY j.tag
ORDER BY count DESC;

I would strongly recommend that you store your multi-valued data in normal columns and rows, not in JSON.我强烈建议您将多值数据存储在普通的列和行中,而不是 JSON 中。 Then the query would become more straightforward:然后查询将变得更加简单:

SELECT `tag`, COUNT(*) AS count
FROM en_tags
GROUP BY `tag`
ORDER BY count DESC;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM