MYSQL:: 条件不工作的存储过程

MYSQL:: Stored Procedure where condition is not working

我正在尝试从 MYSQL select 构建 json 对象并将其传递给输出参数。 一切正常,但是当我使用 json_object、json_arrayagg、json_objectagg.

时,我的 where 条件不适用

我的select查询是,

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;

对于此查询,table 中的所有记录都将被填充。

如果我像下面那样删除

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;

它 returns 正如预期的那样只有 3 行。

我在这里做错了什么....

如果要限制聚合的行数,需要使用子查询来限制选择的行,然后在主查询中聚合。

SELECT json_object('arraylist',json_arrayagg(json_object('id',id,'code', code, ..., ..., ...))) AS jsonobj
FROM (
    SELECT *
    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
) AS x;