gpt4 book ai didi

sql - 如何选择任意行的相邻行(在 sql 或 postgresql 中)?

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

我想根据特定条件选择一些行,然后从该集合中取出一个条目以及它前后的 5 行。

现在,如果表上有主键,我可以用数字来执行此操作(例如,主键在数字上比目标行的键小 5,比目标行的键多 5)。

所以选择主键为7的行及其附近的行:

select primary_key from table where primary_key > (7-5) order by primary_key limit 11;

2
3
4
5
6
-=7=-
8
9
10
11
12

但是如果我只选择某些行开始,我就失去了使用主键的数字方法(并且假设键在它们的顺序中没有任何间隙),并且需要另一种方法来获得最接近的特定目标行前后的行。

这种选择的主键输出可能看起来更随机,因此不太容易被数学定位(因为一些结果会被过滤掉,例如使用 where active=1):

select primary_key from table where primary_key > (34-5) 
order by primary_key where active=1 limit 11;

30
-=34=-
80
83
100
113
125
126
127
128
129

请注意,由于示例 where 条件(例如因为有许多非事件项目)导致的主键间隙,我不再获得最接近的上方 5 和下方 5 ,相反,我得到下方最接近的 1 和上方最接近的 9。

最佳答案

如果您使用一种编程语言运行两个查询,有很多方法可以做到这一点,但这里有一种方法可以在一个 SQL 查询中做到这一点:

(SELECT * FROM table WHERE id >= 34 AND active = 1 ORDER BY id ASC LIMIT 6)
UNION
(SELECT * FROM table WHERE id < 34 AND active = 1 ORDER BY id DESC LIMIT 5)
ORDER BY id ASC

这将返回上面的 5 行、目标行和下面的 5 行。

关于sql - 如何选择任意行的相邻行(在 sql 或 postgresql 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3672283/

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