[英]Why the LIMIT are ignored when SELECT using JSON_ARRAYAGG?
[英]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.