SQL语句 如何取最后一次的值?[或者说如何取某个字段最大数值及其相应行的其他字段值]
如下表Z中,取字段a最大的那行字段a字段a字段cSP000016964520SP000016964730SP000016964115SP000017755416SP000...
如下表Z 中,取 字段a 最大的那行
字段a 字段a 字段c
SP000016964 5 20
SP000016964 7 30
SP000016964 1 15
SP000017755 4 16
SP000017755 8 12
最后得到下面结果
SP000016964 7 30
SP000017755 8 12 展开
字段a 字段a 字段c
SP000016964 5 20
SP000016964 7 30
SP000016964 1 15
SP000017755 4 16
SP000017755 8 12
最后得到下面结果
SP000016964 7 30
SP000017755 8 12 展开
4个回答
展开全部
字段a 字段b 字段c
SP000016964 5 20
SP000016964 7 30
SP000016964 1 15
SP000017755 4 16
SP000017755 8 12
最后得到下面结果
SP000016964 7 30
SP000017755 8 12
--用如下语句即可
select z.* from z, (select a,max(b) as max_b from z group by a) z1
where z.a = z1.a and z.b = z1.max_b
但是如果出现如下情况下话,可能数据就有问题了,即第2个字段有多个相同的最大值,这个时候规则会变的复杂,如果是oracle数据库的话,可以考虑oracle的分析函数来搞定
SP000016964 5 20
SP000016964 7 30
SP000016964 7 15
SP000016964 5 20
SP000016964 7 30
SP000016964 1 15
SP000017755 4 16
SP000017755 8 12
最后得到下面结果
SP000016964 7 30
SP000017755 8 12
--用如下语句即可
select z.* from z, (select a,max(b) as max_b from z group by a) z1
where z.a = z1.a and z.b = z1.max_b
但是如果出现如下情况下话,可能数据就有问题了,即第2个字段有多个相同的最大值,这个时候规则会变的复杂,如果是oracle数据库的话,可以考虑oracle的分析函数来搞定
SP000016964 5 20
SP000016964 7 30
SP000016964 7 15
展开全部
字段a 字段a 字段c
--->字段1 字段a 字段c
select *
from Z t
where not exists(select 1 from Z where 字段1 = t.字段1 and 字段a > t.字段a)
--->字段1 字段a 字段c
select *
from Z t
where not exists(select 1 from Z where 字段1 = t.字段1 and 字段a > t.字段a)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写个嵌套吧
select * from table where 字段a=(select max(字段a) from table )
select * from table where 字段a=(select max(字段a) from table )
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
怎么会有两个字段a ,写错了吧
select * from 表 where 字段b in (select max(字段b) from 表 group by 字段a )
select * from 表 where 字段b in (select max(字段b) from 表 group by 字段a )
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询