需要对一个字段内容进行分组(group),然后取分组中按照另一个字段排序后的第一条记录,如何写SQL语句?

时间:2020-11-26 19:16:49
比如按照字段1进行分组,然后在每个分组中按照字段2排序,最后每个分组取最上一条记录。
谢谢各位!

14 个解决方案

#1


select * from 表 as AA where not exists(select 1 from 表 as BB where AA.字段1=BB.字段1 and AA.字段2<BB.字段2)

#2


1:
Select 字段1,sum(字段2) as 字段2 from 表
group by 字段1
order by sum(字段2)

2:最后每个分组取最上一条记录。(既然是分组就只有一条记录啊?)

#3


1:最后每个分组取最上一条记录。(分组就只有一条记录啊)
2:select 字段1,sum(字段2) from 表 order by sum(字段2)


#4


1:最后每个分组取最上一条记录。(分组就只有一条记录啊)
2:select 字段1,sum(字段2) from 表 order by sum(字段2)


#5


select ColnameA from Tablename group by ColnameA order by ColnameB

#6


什么意思?你按1分组?然后在按2排序?
不可能的啊 !!你按2排序,那么2必定分组后数据里面,那么2必定也要在group by里

取第一条用top 1

#7


不明白

#8


select * from 表 as A 
where 字段2 = (select top 1 字段2 from 表 where 字段1=A.字段1 order by 字段2)

#9


一楼的我理解起来有点难度。。不过似乎是对的
二楼的为什么要有sum?字段2不是数值型的
三楼的那个是不对的。。。

#10


你是要这个:

 select * from 表 tem where 字段2=(select top 1 字段2 from 表 where 字段1=tem.字段1)

#11


你是要这个:

 select * from 表 tem where 字段2=(select top 1 字段2 from 表 where 字段1=tem.字段1)

#12


select * from 表 tem where 字段2=(select top 1 字段2 from 表 where 字段1=tem.字段1 order by 字段2)

或:

select * from 表 tem where 字段2=(select min(字段2) from 表 where 字段1=tem.字段1)

你可以试试。

#13


chenxi_aji(阿吉) ,我的肯定是对的.:)

#14


我现在理解了,哈哈,谢谢, CrazyFor(太阳下山明朝依旧爬上来)的那个的确最好

#1


select * from 表 as AA where not exists(select 1 from 表 as BB where AA.字段1=BB.字段1 and AA.字段2<BB.字段2)

#2


1:
Select 字段1,sum(字段2) as 字段2 from 表
group by 字段1
order by sum(字段2)

2:最后每个分组取最上一条记录。(既然是分组就只有一条记录啊?)

#3


1:最后每个分组取最上一条记录。(分组就只有一条记录啊)
2:select 字段1,sum(字段2) from 表 order by sum(字段2)


#4


1:最后每个分组取最上一条记录。(分组就只有一条记录啊)
2:select 字段1,sum(字段2) from 表 order by sum(字段2)


#5


select ColnameA from Tablename group by ColnameA order by ColnameB

#6


什么意思?你按1分组?然后在按2排序?
不可能的啊 !!你按2排序,那么2必定分组后数据里面,那么2必定也要在group by里

取第一条用top 1

#7


不明白

#8


select * from 表 as A 
where 字段2 = (select top 1 字段2 from 表 where 字段1=A.字段1 order by 字段2)

#9


一楼的我理解起来有点难度。。不过似乎是对的
二楼的为什么要有sum?字段2不是数值型的
三楼的那个是不对的。。。

#10


你是要这个:

 select * from 表 tem where 字段2=(select top 1 字段2 from 表 where 字段1=tem.字段1)

#11


你是要这个:

 select * from 表 tem where 字段2=(select top 1 字段2 from 表 where 字段1=tem.字段1)

#12


select * from 表 tem where 字段2=(select top 1 字段2 from 表 where 字段1=tem.字段1 order by 字段2)

或:

select * from 表 tem where 字段2=(select min(字段2) from 表 where 字段1=tem.字段1)

你可以试试。

#13


chenxi_aji(阿吉) ,我的肯定是对的.:)

#14


我现在理解了,哈哈,谢谢, CrazyFor(太阳下山明朝依旧爬上来)的那个的确最好