我只想获取json列中的一个特定字段并计算其值。
[
{
"sku": "DT-ALD3-EA18",
"adId": 244077676726655,
"asin": "B07V3SSLN1",
"cost": 12,
"clicks": 0,
},
{
"sku": "DT-ALF3-EA1F",
"adId": 24408767672665,
"asin": "B07V3SSLN7",
"cost": 0,
"clicks": 0,
}
]
目前,我只是选择json列并循环它,然后提取成本字段,将其推入数组并使用php的array_sum
进行计算。但这并不高效,因为我有一个非常大的表,当使用大间隔的日期范围时会导致内存限制错误。我的目标是提取所需字段并进行计算。我尝试过
$orders = DB::table('performance_reports')
->select(DB::raw('sum("JSON_EXTRACT(`info` , '$[*].cost'")'))
->whereBetween('date',[$from, $to])
->get()->toArray();
但我得到了语法验证错误。
如何在mysql的json字段中只查询对象数组中的特定字段并进行计算?
2条答案
按热度按时间insrf1ej1#
我只是解决它
希望对其他人也有帮助。
luaexgnf2#
这对我有用
也要查询
查看Laravel文档的更多信息