服務(wù)熱線
153 8323 9821
對于表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小的記錄數(shù)不能大于1,可以保證該記錄在前2條]
結(jié)果
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
第二種取法:
select * from test2 a where a.id in
(select top 2 b.id from test2 b where b.typeid = a.typeid order by datetime desc)
order by typeid, datetime desc
結(jié)果
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
PS:不知道有沒有不用子查詢的。