php 如何检索JSON Object数据MySQL select query

mcdcgff0  于 2023-06-28  发布在  PHP
关注(0)|答案(2)|浏览(108)

我有一个表,即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

46scxncf

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
olhwl3o2

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对象中提取所需的值。

相关问题