在从数据库中选择json数据时,我遇到了一个问题。有没有一种方法可以按索引提取数据。
我之所以需要它,是因为我想按json项的名称求和和和分组,如果我使用以下方法从数组中提取第一个项,就可以实现这一点:
DB::raw('JSON_UNQUOTE(JSON_EXTRACT(resources, "$[0].name[0]")) as brand_name'),
DB::raw('JSON_UNQUOTE(JSON_EXTRACT(resources, "$[0].brand_id[0]")) as brand_id'),
DB::raw('SUM(JSON_EXTRACT(resources, "$[0].quantity[0]")) as quantity')
然后我将按$[0].name[0]分组,得到唯一的结果。
存储在sql中的数据:
[[{\"name\": \"Product 1\", \"brand_id\": \"2\", \"quantity\": 2},
{\"name\": \"Product 2\", \"brand_id\": \"3\", \"quantity\": 1}],
[{\"name\": \"Product 3\", \"brand_id\": \"1\", \"quantity\": 2},
{\"name\": \"Product 1\", \"brand_id\": \"2\", \"quantity\": 5}],
[{\"name\": \"Product 4\", \"brand_id\": \"4\", \"quantity\": 2},
{\"name\": \"Product 5\", \"brand_id\": \"5\", \"quantity\": 5}]]
如果你明白我的意思,我应该把所有同名产品的数量加起来,得到唯一的回答,而不是多个同名产品。例如,应该只有一个
总数量为7的产品1。
1条答案
按热度按时间jvlzgdj91#
假设您可以获取原始json字符串:
将为您提供: