gpt4 book ai didi

SQL 查询 2 限制

转载 作者:行者123 更新时间:2023-12-04 10:24:42 24 4
gpt4 key购买 nike

我有以下问题,我想限制返回的项目总数,同时将一个值限制为某个数字

我做这样的查询

select * from messages order by m.priority ASC limit 5;

现在我想执行以下操作,我有一个名为 running 的字段,我希望能够说在这些结果中,我希望有最多 n 个未运行的结果,例如2 但我还是想根据优先级取回 5 个结果

因此,如果我在数据库中有以下数据:

priority  | running  
----------+---------
1 | true
2 | false
3 | false
4 | false
5 | false
6 | true
7 | true
8 | true

我的总限制为 5,非运行限制为 2 我希望得到以下结果

priority  | running  
----------+---------
1 | true
2 | false
6 | true
7 | true
8 | true

有人建议如何在 PostgreSQL 中做到这一点吗?

更新:
我得到了基于@Gordon Linoff 答案给出我想要的结果的查询
select m.*
from (select t.*,
row_number() over (partition by t.running order by t.priority) as seqnum
from message t) m
where ((not m.running and seqnum <= 2) or (m.running and seqnum <= 5)) order by m.priority limit 5;

友情链接 http://sqlfiddle.com/#!17/98477/1

最佳答案

我想你想要:

select m.*
from (select m.*,
row_number() over (partition by running order by m.priority) as seqnum
from messages
) m
where ((not m.running and seqnum <= 2) or
(m.running and seqnum <= 3)
);

这里 3 = 5 - 2。

关于SQL 查询 2 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60670298/

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