首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Postgresql,在连接中定义限制?

Postgresql,在连接中定义限制?
EN

Stack Overflow用户
提问于 2021-03-17 01:43:24
回答 1查看 19关注 0票数 0

我有以下表格:

代码语言:javascript
运行
复制
library
    |id|...
books
    |id|library_id (fk)|...
permissions
    |user_id (fk)|library_id(fk)|read bool| ...

我想要找到某个用户(id)可以在用户拥有读取权限的任何图书馆中看到的最新的10本书。

图书馆可以有很多书。

用户可以在每个库中有一条权限记录,其中read布尔值为true或false

我不确定如何做的是将每个图书馆的图书结果限制在我想要动态设置的某个limit内。

通常我会这样做:

代码语言:javascript
运行
复制
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本(限制)图书。

如何设置每个库的限制?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-17 03:44:18

您将执行横向联接:

代码语言:javascript
运行
复制
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=true
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66660541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档