gpt4 book ai didi

SQL Group by查询从同一个表中选择数据

转载 作者:行者123 更新时间:2023-12-01 10:00:43 26 4
gpt4 key购买 nike

我的表有以下数据,

ID name  devID
1 abc 101
2 def 111
3 ghi 121
4 abc 102
5 def 110

我想根据以下条件选择行(ID、名称、devID):

一个。 name abc 的 devID 值增加了 1,因此结果中应该只显示更高值的记录(仅 102)

name def 的 devID 值减 1,应该显示所有记录(111 和 110)

此外,我们将继续为不同的行添加记录,并且每个名称在表中的行数不会超过 2 行或最多 3 行,因此上述条件应始终为真。

请帮我解决这个问题。提前致谢。

最佳答案

我使用了增量方法。我真的没有看到另一种选择。我相信这会返回您需要的东西:

create table #t1
(
ID int identity,
name varchar(3),
devID int
)

insert into #t1(name,devID)
values('abc',101),('def',111),('ghi',121),('abc',102),('def',110)


create table #t2
(
ID int,
name varchar(3),
devID int
)

declare @count int = 1,
@name1 varchar(3)
while @count <= (select MAX(ID) from #t1)
begin--1
set @name1 = (select name from #t1 where ID = @count)
if (@name1 not in (select distinct name from #t2)) or ((select devID from #t1 where ID = @count) < (select devID from #t2 where name = @name1))
begin--2
insert into #t2
select *
from #t1
where ID = @count
end--2
else
begin--2
update #t2
set devID = (select devID from #t1 where ID = @count)
where name = @name1
end--2

set @count+=1
end--1

select *
from #t2

drop table #t1
drop table #t2

编辑:结果:

ID          name devID
----------- ---- -----------
1 abc 102
2 def 111
3 ghi 121
5 def 110

(4 row(s) affected)

关于SQL Group by查询从同一个表中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16690570/

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