日期:2014-05-18  浏览次数:21705 次

sql 查询某字段最大值对应的另一个字段的值
表:a

finterid fitemid fprice
  1 a 1
  2 b 2
  3 c 2
  4 a 3
  5 b 4
  .
  .
  .

finterid 字段没有重复的值

我自己写的语句使这样的:
select fitemid, max(FInterid),fprice from a group by Fitemid,fprice order by a.fitemid
因为我把fprice也group by 了,所以得出的结果的话,例如这个表,fitemid有有行值,
fprice不group by 的话,又语法错误~其他的聚合函数也没一个适用的,怎么办呢

------解决方案--------------------
SQL code
select *  from a t
where not exists(select 1 from a where t.fitemid=fitemid and t.FInterid<FInterid)

------解决方案--------------------
假如有最大值的记录是多笔怎么办哪?

实际上你需要在得出最大值的结果集上再链接查询出对应的记录。

#1楼 的结果就符合你的要求。
但是还是会存在对应最大值的记录有多笔的问题
------解决方案--------------------
SQL code
select a.* from 表a  a inner join (select  max(FInterid) as maxf from 表a group by fitemid) b on a.finterid=b.maxf

------解决方案--------------------
如果你要取的是finterid的最大值,那么直接这样就一了
SQL code
select a.* from 表a  a inner join (select  max(FInterid) as maxf from 表a) b on a.finterid=b.maxf