使用JSON_ARRAYAGG函数时,limit子句似乎不起作用。
有没有更好的方法来实现这个功能?
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.发布于 2019-11-13 02:27:06
如果使用不带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
) xhttps://stackoverflow.com/questions/58824292
复制相似问题