通过键名获取项目计数

时间:2018-12-14 16:10:30

标签: php mysql json laravel

我在MySQL数据库中有这些记录。在JSON类型列上。

Record1: {"images": ["image.jpeg", "image.jpeg"]}
Record2: {"images": ["image.jpeg", "image.jpeg", "image.jpeg"]}
Record3: {"images": ["image.jpeg"]}

如何通过JSON属性的键名(在我的情况下为'images')获得图像的总数?

我正在尝试实现与在以下查询中运行此查询相同的功能,但是从images键计算数组项。

SELECT
  `field`,
  count( * ) AS total 
FROM
  `table_name` 
WHERE
  `condition`
GROUP BY
  `something`

这将为您提供此结果:

field      total
------------------
field1       5
field2       2

我要实现的目标:

 field      total
 -----------------
 images       6

表结构

Table structure

表格数据

table data

2 个答案:

答案 0 :(得分:1)

尝试:

SELECT
  `type`,
  SUM(
    JSON_LENGTH(`media`, '$.images')
  ) `media`
FROM
  `table_name`
GROUP BY
  `type`;

请参见dbfiddle

答案 1 :(得分:0)

确定可以使用此查询:

SELECT type,JSON_LENGTH(media) FROM `tabl4` group by type

从此处检查执行情况:Demo