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

一个很简单的SQL查询问题,关于分组的,请进来细看,在线等,有答案测试通过即结贴
有如下表
表名     test

fid           fdate                     ftext
1               2007-01-01               a
1               2007-01-02               b
2               2007-01-03               c
2               2007-01-04               d

要求返回如下结果

1                 2007-01-02             b
2                 2007-01-04             d


就是按FID分组,返回日期最大的记录

但如果不取ftext的值的话,我用

select   fid,max(fdate)
from   test
group   by   fid  

是可以的,但加上ftext就是四条记录   ,请遇到过类似问题的朋友帮忙看看,多谢

------解决方案--------------------
更正
select * from test a
where not exists (
select 1 from test
where fid=a.fid
and fdate> a.fdate
)

法2
select * from test a
where fdate= (
select max(fdate) from test
where fid=a.fid
)

------解决方案--------------------
--方法一
Select * From test A Where Not Exists(Select fdate From test Where fid = A.fid And fdate > A.fdate)

--方法二
Select * From test A Where fdate = (Select Max(fdate) From test Where fid = A.fid)

--方法三
Select A.* From test A
Inner Join
(Select fid, Max(fdate) As fdate From test Group By fid) B
On A.fid = B.fid And A.fdate = B.fdate
------解决方案--------------------
select a.* from test a,(select fid,max(fdate)
from test
group by fid ) b
where a.fid=b.fid and a.fdate=b.fdate