gpt4 book ai didi

mysql - 为什么使用 JSON_ARRAYAGG 进行 SELECT 时会忽略 LIMIT?

转载 作者:行者123 更新时间:2023-11-29 15:29:31 25 4
gpt4 key购买 nike

set countt = PAGE_ * 5 - 5;

set @data = (select JSON_ARRAYAGG(JSON_OBJECT('id', room_participants.id, 'isAdmin', room_participants.isAdmin, 'userId', room_participants.userId, 'joinTime', room_participants.joinTime, 'leftTime', room_participants.leftTime, 'status', room_participants.status, 'kickTime', room_participants.kickTime, 'displayName', users.displayName, 'phone', users.phone, 'created', created))
from room_participants
LEFT JOIN users ON room_participants.userId = users.id
WHERE room_participants.roomId = ROOMID_ LIMIT 5 OFFSET countt);

我需要上述查询以 json_arrayagg 格式仅显示 5 个数据,但它返回整个数据而不限制为 5 个。我的查询有什么问题?

最佳答案

我不知道您的代码不起作用的确切原因,但一种解决方法是将 LIMIT 应用于子查询,然后基于此形成 JSON:

SET countt = PAGE_ * 5 - 5;

SET @data = (
SELECT JSON_ARRAYAGG(JSON_OBJECT('id', id, 'isAdmin', isAdmin, 'userId', userId, 'joinTime', joinTime, 'leftTime', leftTime, 'status', status, 'kickTime', kickTime, 'displayName', displayName, 'phone', phone, 'created', created))
FROM
(
SELECT rp.id, rp.isAdmin, rp.userId, rp.joinTime, rp.leftTime, rp.status,
rp.kickTime, u.displayName, u.phone, created
FROM room_participants rp
LEFT JOIN users u ON rp.userId = u.id
WHERE rp.roomId = ROOMID_
LIMIT 5 OFFSET countt
) t
);

请注意,使用LIMIT而不使用ORDER BY通常不是一个明确定义的事情。理想情况下,您还应该向子查询添加一个 ORDER BY 子句。

关于mysql - 为什么使用 JSON_ARRAYAGG 进行 SELECT 时会忽略 LIMIT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58829302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com