Ely*_*din 7 mysql stored-procedures mysql-workbench
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);
Run Code Online (Sandbox Code Playgroud)
我需要上述查询以 json_arrayagg 格式仅显示 5 个数据,但它返回整个数据而不将其限制为 5 个。我的查询有什么问题?
您需要先对limit结果使用子查询aggregating。
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', t.dCreated)
)
from
(select t1.*, t2.*, t1.created as dCreated from room_participants t1
left join users t2 on t1.userId = t2.id
where t1.roomId = ROOMID_ limit 5 offset countt) t);
Run Code Online (Sandbox Code Playgroud)