gpt4 book ai didi

sql - PostgreSQL - 将底部的 N 个结果切片并将它们移动到顶部

转载 作者:行者123 更新时间:2023-11-29 11:55:17 26 4
gpt4 key购买 nike

比方说,我有一个像这样检索的电子邮件地址列表:

SELECT email FROM users ORDER BY email

返回:

a@email.com
b@email.com
c@email.com
...
x@email.com
y@email.com
z@email.com

我想获取此结果集,将底部的 3 封电子邮件切分并移至顶部,这样您会看到如下结果集:

x@email.com
y@email.com
z@email.com -- Note x-z is here
a@email.com
b@email.com
c@email.com
...
u@email.com
v@email.com
w@email.com

有没有办法在 SQL 中执行此操作?出于内存原因,我不想在应用程序端执行此操作。

最佳答案

如果您知道值是“x”或更大,您可以简单地执行以下操作:

order by (case when email >= 'x@email.com' then 1 else 2 end),
email

否则,您可以使用row_number():

select email
from (select email, row_number() over (order by email desc) as seqnum
from users u
) u
order by (case when seqnum <= 3 then 1 else 2 end),
email;

关于sql - PostgreSQL - 将底部的 N 个结果切片并将它们移动到顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29041993/

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