gpt4 book ai didi

sql - 如何在 SQL Server 中选择连续的重复项

转载 作者:行者123 更新时间:2023-12-02 05:47:59 25 4
gpt4 key购买 nike

我想从 SQL Server 表中选择重复的条目,但前提是 id 是连续的。

我一直试图扭曲this answer满足我的需求,但我无法让它工作。

上面的回答是针对Oracle的,但是我看到SQL Server也有leadlag职能。

另外,我认为上面的答案是 *在重复项旁边,但我只想选择重复项。

select 
id, companyName,
case
when companyName in (prev, next)
then '*'
end match,
prev,
next
from
(select
id,
companyName,
lag(companyName, 1) over (order by id) prev,
lead(companyName, 1) over (order by id) next
from
companies)
order by
id;

示例 :

所以从这个数据集:
id      companyName
-------------------
1 dogs ltd
2 cats ltd
3 pigs ltd
4 pigs ltd
5 cats ltd
6 cats ltd
7 dogs ltd
8 pigs ltd

我想选择:
id      companyName
-------------------
3 pigs ltd
4 pigs ltd
5 cats ltd
6 cats ltd

更新

我时不时地对我在 SO 上得到的答案的数量和质量感到吃惊。这是其中之一。我没有专业水平来判断一个答案比另一个更好,所以我选择了 SqlZim,因为这是我看到的第一个有效答案。但是很高兴看到不同的方法。尤其是一个小时前,我还在想“这可能吗?”。

最佳答案

你非常接近你想要的:

select id, companyName
from (select c.*,
lag(companyName, 1) over (order by id) prev,
lead(companyName, 1) over (order by id) next
from companies c
) a
where CompanyName in (prev, next)
order by id;

关于sql - 如何在 SQL Server 中选择连续的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43217394/

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