gpt4 book ai didi

SQL为相邻集选择相邻行

转载 作者:行者123 更新时间:2023-11-29 11:33:02 24 4
gpt4 key购买 nike

我在使用 Postgres 在 SQL 中执行以下操作时遇到问题。我的程序有一组有序的数字。在我的数据库中,我有一个表,该表将所有数字存储在带有额外数据的行中。这些行也是按顺序排列的。

例如我需要找到的集合是;

1,5,6,1,3

数据库有行

row1 4
row2 5
row3 1
row4 5
row5 6
row6 1
row7 3
row8 2
row9 7

在上面的示例中,很容易看出我的集合是从第 3 行到第 7 行找到的。仍然在 SQL 中这样做对我来说是个谜。我正在阅读一些关于数据透视表的文章,但我仍然希望有更简单的方法。

最佳答案

两个数据集都需要有标识顺序的字段。

如果排序列是连续的连续数字集,那么这是可能的,尽管我怀疑它是否很快。

Table 1                 Table 2

id | value id | value
1 4 1 1
2 5 2 5
3 1 3 6
4 5 4 1
5 6 5 3
6 1
7 3
8 2
9 7

然后这个查询...

SELECT
*
FROM
table_1
INNER JOIN
(
SELECT
MIN(table_1.id) AS first_id,
MAX(table_1.id) AS last_id
FROM
table_1
INNER JOIN
table_2
ON table_1.value = table_2.value
GROUP BY
table_1.id - table_2.id
HAVING
COUNT(*) = (SELECT COUNT(*) FROM table_2)
)
AS matched_sets
ON matched_sets.first <= table_1.id
AND matched_sets.last >= table_1.id

关于SQL为相邻集选择相邻行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8588866/

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