【发布时间】:2020-06-15 01:46:53
【问题描述】:
我正在尝试从 MYSQL 选择构建 json 对象并将其传递给输出参数。 一切正常,但是当我使用 json_object、json_arrayagg、json_objectagg 时,我的 where 条件不适用。
我的选择查询是,
SELECT json_object('arraylist',json_arrayagg(json_object('id',id,'code', code, ..., ..., ...))) AS jsonobj
FROM normal_table a
WHERE a.code='826'
AND a.status='true'
AND a.vb_code ='124'
ORDER BY a.date_ts DESC limit 3;
对于此查询,表中的所有记录都将被填充。
如果我像下面这样删除
SELECT json_object('id',id,'code', code, ..., ..., ...) AS jsonobj
FROM normal_table a
WHERE a.code='826'
AND a.status='true'
AND a.vb_code ='124'
ORDER BY a.date_ts DESC limit 3;
它只返回预期的 3 行。
我在这里做错了什么......
【问题讨论】:
-
你有“限制 3”...它总是返回最多 3 行。你的期望是什么?
-
@Ci-CiMillsThomson,这是我所期待的,但它正在返回表中的所有行。
-
你没有
GROUP BY,所以这只返回1行,它聚合了所有匹配WHERE子句的行。 -
LIMIT适用于聚合后的结果,而不是聚合后的行数。 -
存储过程在哪里?这只是一个普通的查询,它在 SP 中的工作方式相同。
标签: mysql json stored-procedures mysql-json