如何查询mysql json列中对象的对象
在我的如何查询mysql json列中对象的对象,mysql,mysql-8.0,mysql-json,Mysql,Mysql 8.0,Mysql Json,在我的orders表中有一个order\u摘要JSON列,其结构如下 { "total": 16.895, "products": { // products is an object of objects instead of array of objects "98": { "price": "2.400", "quantity": 2, "sub_total": 4.8, "product_id": 100, "v
orders
表中有一个order\u摘要
JSON列,其结构如下
{
"total": 16.895,
"products": { // products is an object of objects instead of array of objects
"98": {
"price": "2.400",
"quantity": 2,
"sub_total": 4.8,
"product_id": 100,
"variant_id": 98
},
"395": {
"price": "3.900",
"quantity": 1,
"sub_total": 3.9,
"product_id": 401,
"variant_id": 395
},
"732": {
"price": "7.695",
"quantity": 1,
"sub_total": 7.695,
"product_id": 754,
"variant_id": 732
}
}
}
我想做的,
我必须计算一个给定的variant\u id
售出的商品总数,因此我想从产品
对象内的数量
字段中获取总和
问题
遗憾的是,products字段不是一个对象数组,而是一个对象对象数组。钥匙为变体\u id
本身。所以我下面的查询不起作用
从订单中选择sum(订单汇总->“$.products.quantity”),其中订单汇总->“$.products.variant\u id”=98
(返回空结果集)
我认为这是因为产品阵列中存在密钥。那么我该如何解决这个问题呢
我正在使用Mysql 8,如果需要更多信息,请告诉我。经过一些尝试和错误,在朋友的帮助下,我找到了以下解决方案
SELECT SUM(order_summary -> '$.products."98".quantity') as sum
FROM orders
WHERE JSON_CONTAINS_PATH(order_summary, 'all', '$.products."98"')