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.时间