我有以下表格:
library
    |id|...
books
    |id|library_id (fk)|...
permissions
    |user_id (fk)|library_id(fk)|read bool| ...我想要找到某个用户(id)可以在用户拥有读取权限的任何图书馆中看到的最新的10本书。
图书馆可以有很多书。
用户可以在每个库中有一条权限记录,其中read布尔值为true或false
我不确定如何做的是将每个图书馆的图书结果限制在我想要动态设置的某个limit内。
通常我会这样做:
select b.id,
       l.id
from book b
inner join library l on l.id = b.library_id
inner join permissions p on l.id = p.library_id
where p.user_id=${user.id} and p.read=true
order by b.created_at desc我不确定如何仅返回用户访问的每个图书馆最近的10本(限制)图书。
如何设置每个库的限制?
发布于 2021-03-17 03:44:18
您将执行横向联接:
select b.id,
       l.id
from permissions p
inner join library l on l.id = p.library_id
cross join lateral 
    (select * from book where library_id=l.id order by created_at desc LIMIT 10) b
where p.user_id=${user.id} and p.read=truehttps://stackoverflow.com/questions/66660541
复制相似问题