分组查询 获取每一组的第一条记录 SQL怎么写?

mrmatm 2008-04-14 04:51:05
value type
1 A
3 A
4 B
8 A
9 B
5 B
怎么按type分组查询 获取每一组的第一条记录 SQL怎么写?
...全文
803 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mrmatm 2008-04-14
  • 打赏
  • 举报
回复
value值不是数字!是字符串
dawugui 2008-04-14
  • 打赏
  • 举报
回复
create table tb(value int,type varchar(10))
insert into tb values(1 , 'A')
insert into tb values(3 , 'A')
insert into tb values(4 , 'B')
insert into tb values(8 , 'A')
insert into tb values(9 , 'B')
insert into tb values(5 , 'B')
go

--根据你提供数据的特殊性,可用下法。
select min(value) value, type from tb group by type
/*
value type
----------- ----------
1 A
4 B
(所影响的行数为 2 行)
*/

--如果不是最小的value排在最前面,则如下:
select a.* from tb a where value = (select top 1 value from tb where type = a.type) order by a.type
/*
value type
----------- ----------
1 A
4 B
(所影响的行数为 2 行)
*/

drop table tb
dawugui 2008-04-14
  • 打赏
  • 举报
回复
[Quote=引用楼主 mrmatm 的帖子:]
value type
1 A
3 A
4 B
8 A
9 B
5 B
怎么按type分组查询 获取每一组的第一条记录 SQL怎么写?
[/Quote]
貌似可以用:

select min(value) value, type from tb group by type
zccmy22 2008-04-14
  • 打赏
  • 举报
回复
select type,max(value) as value from 表 group by type
huangjh_love 2008-04-14
  • 打赏
  • 举报
回复
select * from tb a
where exists(select 1 from tb where [type]=a.type and [values]<=a.[values])
group by a.type
-狙击手- 2008-04-14
  • 打赏
  • 举报
回复
select type,value = min(value) 
from 表A
group by type

select type,value = max(value)
from 表A
group by type
-狙击手- 2008-04-14
  • 打赏
  • 举报
回复
select *
from ta a
where not exists(select 1 from ta where type = a.type and value > a.value)
winstonbonaparte 2008-04-14
  • 打赏
  • 举报
回复
select value = min(value) from 表A group by type

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧