我有以下要求:
let artPerCall = 20
let artPerUser = 2
let start = req.params.page
let query = `
SELECT * from
(
SELECT a.*, row_to_json(u.*) as userinfo,
row_number() over (partition by u.address order by a.date desc) as ucount
FROM artworks a INNER JOIN users u ON a.address = u.address
WHERE a.flag != ($1) OR a.flag IS NULL
) t
WHERE ucount <= ($2)
ORDER BY date DESC
LIMIT ${artPerCall} OFFSET ${(start-1) * artPerCall}`
pool.query(query, ["ILLEGAL", artPerUser])
.then(users => {
if (users) {
res.json(users.rows);
}
})
.catch(err => {
next(err);
})
通过具有以下路径的 API 调用/artworks/paginate/1/20where ( /artworks/paginate/{page}/20)
预期结果是每次调用获得 20 个结果,每个用户最多 2 个条目。
当前结果:似乎它按预期只为每个用户返回 2 个条目,但是一旦它为页面上的用户返回 2 个,那么即使他们有条目,后续页面中的同一用户也不会再有结果。
知道我缺少什么吗?