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

sql难题,请高手帮忙?
比如有这样A,B,D。。。。。用户发布文章,表art记录内容如下,T1至TN(是表的关键字段),假设时间D6> D5> D4......
用户                         文章id                         时间
A                               T1                             D1
A                               T2                             D2
B                               T3                             D3
B                               T4                             D4
C                               T5                             D5
C                               T6                             D6
如何取每个用户最后发布一条记录(用户不能重复),而且,能按时间排序
如下:
c                                 T6                           D6
B                                 T4                           D4
A                                 T2                           D2  

有这样的SQL虽然可以实现,但执行效率低,特别表记录多的时候,非常耗系统资源
Select   *   from   art   a   where   a.文章id   =   (select   top   1   b.文章id   from   art   b   where   a.用户   =   b.用户   order   by   b.时间)   order   by   a.时间
不知道兄弟有没有更好的解决办法?


------解决方案--------------------
Select
A.*
From
art A
Inner Join
(Select 用户, Max(时间) As 时间 From art Group By 用户) B
On A.用户 = B.用户 And A.时间 = B.时间