62,046
社区成员
发帖
与我相关
我的任务
分享
var query = db.table.OrderBy(p => p.datetime).GroupBy(p => p.typeid).Select(p => p.First()).Take(6);
生成的sql如下,你参考一下:
SELECT TOP (6) [t3].[test], [t3].[id], [t3].[typeid], [t3].[datetime]
FROM (
SELECT [t0].[typeid]
FROM [dbo].[table] AS [t0]
GROUP BY [t0].[typeid]
) AS [t1]
OUTER APPLY (
SELECT TOP (1) 1 AS [test], [t2].[id], [t2].[typeid], [t2].[datetime]
FROM [dbo].[table] AS [t2]
WHERE [t1].[typeid] = [t2].[typeid]
ORDER BY [t2].[datetime]
) AS [t3]
ORDER BY [t3].[datetime]
select top 6 t1.*
from table t1,(select typeid,max(datetime) datetime from table group by typeid) t2
where t1.typeid = t2.typeid and t1.datetime = t2.datetime