有以下表结构:
id value1 value2
a 1 1
a 2 2
a 1 1
b 3 3
b 2 2
b 1 1
c 1 1
c 2 2
c 1 1我想从各id中取出各自的第一条纪录即以下结果:
id value1 value2
a 1 1
b 3 3
c 1 1
应该怎么写呢?大家帮帮忙
id value1 value2
a 1 1
a 2 2
a 1 1
b 3 3
b 2 2
b 1 1
c 1 1
c 2 2
c 1 1我想从各id中取出各自的第一条纪录即以下结果:
id value1 value2
a 1 1
b 3 3
c 1 1
应该怎么写呢?大家帮帮忙
id name
11 aaaa
11 bbbb
11 cccc
22 dddd
22 eeee
22 ffff
如何将表中的相同id号的第一条记录取出来?即:
id name
11 aaaa
22 dddd
CREATE TABLE #a (
[id] [char] (10),
[name] [char] (10)
)insert into #a(id,name) values('11','aaaa')
insert into #a(id,name) values('11','bbbb')
insert into #a(id,name) values('11','cccc')
insert into #a(id,name) values('22','dddd')
insert into #a(id,name) values('22','eeee')
insert into #a(id,name) values('22','ffff') select * from #a b
where name=(select top 1 name from #a where id=b.id)drop table #aid name
---------- ----------
11 aaaa
22 dddd (所影响的行数为 2 行)
CREATE TABLE #a (
[id] [char] (10),
[name] [char] (10)
)insert into #a(id,name) values('11','aaaa')
insert into #a(id,name) values('11','bbbb')
insert into #a(id,name) values('11','cccc')
insert into #a(id,name) values('22','dddd')
insert into #a(id,name) values('22','eeee')
insert into #a(id,name) values('22','ffff') select id1=identity(int,1,1),* into #t from #a
go
select id,name from #t where id1 in(select min(id1) from #t group by id)drop table #a
drop table #tid name
---------- ----------
11 aaaa
22 dddd (所影响的行数为 2 行)id 分类
1 a
2 b
3 c
4 b
5 b
6 a
7 c
8 a
9 ccreate table T(id int, type varchar(10))
insert T select 1, 'a'
union all select 2, 'b'
union all select 3, 'c'
union all select 4, 'b'
union all select 5, 'b'
union all select 6, 'a'
union all select 7, 'c'
union all select 8, 'a'
union all select 9, 'c'select * from T as tmp
where (select count(*) from T where type=tmp.type and id<tmp.id)<2
order by typedrop table t
--result
id type
----------- ----------
1 a
6 a
2 b
4 b
3 c
7 c(6 row(s) affected)
drop table tb
gocreate table tb(id varchar(1),value1 int,value2 int)
insert into tb(id,value1,value2) values('a',1,1)
insert into tb(id,value1,value2) values('a',2,2)
insert into tb(id,value1,value2) values('a',1,1)
insert into tb(id,value1,value2) values('b',3,3)
insert into tb(id,value1,value2) values('b',2,2)
insert into tb(id,value1,value2) values('b',1,1)
insert into tb(id,value1,value2) values('c',1,1)
insert into tb(id,value1,value2) values('c',2,2)
insert into tb(id,value1,value2) values('c',1,1)
goselect id1=identity(int,1,1) , * into test from tbselect a.id,a.value1,a.value2 from test a,
(select id,min(id1) id1 from test group by id) b
where a.id = b.id and a.id1 = b.id1drop table tb,test/*
id value1 value2
---- ----------- -----------
a 1 1
b 3 3
c 1 1(所影响的行数为 3 行)*/
insert into #a(id,value1,value2) values('a',1,1)
insert into #a(id,value1,value2) values('a',2,2)
insert into #a(id,value1,value2) values('a',1,1)
insert into #a(id,value1,value2) values('b',3,3)
insert into #a(id,value1,value2) values('b',2,2)
insert into #a(id,value1,value2) values('b',1,1)
insert into #a(id,value1,value2) values('c',1,1)
insert into #a(id,value1,value2) values('c',2,2)
insert into #a(id,value1,value2) values('c',1,1) select id1=identity(int,1,1),* into #t from #aselect id,value1,value2 from #t a
where not exists(select 1 from #t
where a.id = id and a.id1 > id1)
drop table #adrop table #t/*id value1 value2
---------- ----------- -----------
a 1 1
b 3 3
c 1 1
*/