日期:2014-05-17 浏览次数:20473 次
--对于表test2(id是主键),有:
SELECT [id], [title], [typeid], [datetime] FROM [xahh].[dbo].[test2]
id title typeid datetime
1 1.1 1 1
2 1.2 1 2
3 1.3 1 3
4 2.1 2 4
5 2.2 2 5
6 2.3 2 6
7 3.1 3 7
8 3.2 3 8
9 3.3 3 9
--取每个typeid的最大datetime的2条:
--第一种取法:
select * from test2 a where
(select count(*) from test2 b where b.typeid = a.typeid and a.datetime< b.datetime) <=1
order by typeid, datetime desc
--[解释:相同typeid的记录中比该记录datetime小的记录数不能大于1,可以保证该记录在前2条]
--结果
id title typeid datetime
3 1.3 1 3
2 1.2 1 2
6 2.3 2 6
5 2.2 2 5
9 3.3 3 9
8 3.2 3 8