繁体   English   中英

为什么 JSON_ARRAYAGG function 的 LIMIT 子句失败?

[英]Why LIMIT Clause failing for JSON_ARRAYAGG function?

当使用 JSON_ARRAYAGG function 时,限制子句似乎不起作用。

有没有更好的方法来实现该功能?

SELECT * FROM USER_TABLE ORDER BY RAND() LIMIT 2;
--> Gives me 2 random employee details - which is perfect.

SELECT JSON_ARRAYAGG(JSON_OBJECT('userId', user_id)) FROM USER_TABLE ORDER BY RAND() LIMIT 2;
--> Gives me ALL the employee details. - which is INCORRECT.

使用不带GROUP BY子句的JSON_ARRAYAGG()只会得到一行。 只有这样才能应用LIMIT 2 ,并且(当然)对该单行没有任何影响。 您可能需要的是 FROM 子句中的LIMIT 2子查询:

SELECT JSON_ARRAYAGG(json_obj)
FROM (
    SELECT JSON_OBJECT('userId', user_id) as json_obj
    FROM USER_TABLE
    ORDER BY RAND()
    LIMIT 2
) x

或者

SELECT JSON_ARRAYAGG(JSON_OBJECT('userId', user_id))
FROM (
    SELECT user_id
    FROM USER_TABLE
    ORDER BY RAND()
    LIMIT 2
) x

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM