我有一个表,即discount_details。我有2列是ID,DiscountTotal.我想对D数组中的每个记录行的json对象进行求和(64,10,10是第一个记录值)。像这里64,10,10是值,需要在MYSQL的select查询中将总值相加为84。我试了下面的例子,但没有工作。请在这个问题上提供帮助。
SELECT JSON_EXTRACT(`DiscountTotal`, '$.D') AS total FROM tablename
46scxncf1#
以下是查询:
SELECT s.SNO, sum(t.Value) FROM tablename s, JSON_TABLE( JSON_EXTRACT(`DiscountTotal`,'$[0].D'), "$[*]" COLUMNS( Value INT PATH "$" ) ) t group by s.SNO
olhwl3o22#
要使用select查询在MySQL中检索JSON对象数据,可以使用MySQL提供的JSON函数。下面是一个如何实现此目标的示例:假设您有一个名为my_table的表,其中一列名为json_data,用于存储JSON对象。要从JSON对象检索数据,可以在选择查询中使用JSON_EXTRACT函数。
SELECT JSON_EXTRACT(json_data, '$.key') AS key, JSON_EXTRACT(json_data, '$.value') AS value FROM my_table;
在上面的查询中,json_data是包含JSON对象的列,key和value是要提取的JSON对象中的键。调整JSON_EXTRACT中的路径以匹配JSON对象的结构。如果JSON对象是嵌套的,则可以使用点表示法来遍历对象结构。例如,如果你的JSON对象看起来像这样:
{"person": { "name": "John", "age": 30}}
可以使用以下查询检索名称和年龄值:
SELECT JSON_EXTRACT(json_data, '$.person.name') AS name, JSON_EXTRACT(json_data, '$.person.age') AS age FROM my_table;
确保将my_table替换为表的实际名称,并根据JSON结构调整列和路径。请注意,JSON函数从MySQL版本5.7.8开始可用。如果您使用的是旧版本,则可能需要升级或考虑其他方法,如字符串操作,以从JSON对象中提取所需的值。
2条答案
按热度按时间46scxncf1#
以下是查询:
olhwl3o22#
要使用select查询在MySQL中检索JSON对象数据,可以使用MySQL提供的JSON函数。下面是一个如何实现此目标的示例:
假设您有一个名为my_table的表,其中一列名为json_data,用于存储JSON对象。要从JSON对象检索数据,可以在选择查询中使用JSON_EXTRACT函数。
在上面的查询中,json_data是包含JSON对象的列,key和value是要提取的JSON对象中的键。调整JSON_EXTRACT中的路径以匹配JSON对象的结构。
如果JSON对象是嵌套的,则可以使用点表示法来遍历对象结构。例如,如果你的JSON对象看起来像这样:
可以使用以下查询检索名称和年龄值:
确保将my_table替换为表的实际名称,并根据JSON结构调整列和路径。
请注意,JSON函数从MySQL版本5.7.8开始可用。如果您使用的是旧版本,则可能需要升级或考虑其他方法,如字符串操作,以从JSON对象中提取所需的值。