gpt4 book ai didi

sql - 每组选择一行而不指定顺序?

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

假设我有这个数据:

create table People (ID int identity, Name nvarchar(50), Age int);   
insert into People values
('Bill Jones', 50),
('Bill Jones', 12),
('Sam Smith', 23),
('Jill Brown', 44),
('Jill Brown', 67),
('Jill Brown', 3)

这个查询:

select * from (
select
ID, Name, Age,
row_number() over (partition by Name order by ID) [rownum]
from People
) a where [rownum] = 1

它成功地为我返回了每个唯一名称的一个人。

ID  NAME        AGE ROWNUM
1 Bill Jones 50 1
4 Jill Brown 44 1
3 Sam Smith 23 1

但是,为了使用 row_number(),我必须指定一个 order by,导致查询计划包含一个昂贵的排序操作。

query plan

我不关心返回的是哪个人;每个名字我只需要一个人。

有没有不用排序的方法?

你可以在这里看到我的查询和执行计划:http://sqlfiddle.com/#!3/3ee32/1/0

最佳答案

我不知道它是否优化了一个但它显示了你想要的记录......没有按条款排序/......

Select * from People a where id in (Select Top(1) id from people b where name in
(Select name from people group by name) and a.name=b.name)

Sql Fidddle Demo Link

关于sql - 每组选择一行而不指定顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16312943/

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