【发布时间】:2011-07-06 13:41:31
【问题描述】:
假设我有一个包含 3 个列的表:ActionId、uid 和 created。
我想按 uid 对操作进行分组,但是每次将新操作插入组(按 uid)时,它都会将组推到顶部,并且该组中的各个行排序。
这是我在 SQL 中提出的:
select * from actions as a
inner join
(
select aa.[uid], MAX(aa.[created]) as maxcreated
from actions as aa
group by aa.[uid]
) as a2 on a2.uid = a.uid
order by a2.maxcreated desc, a.created desc
有没有更好的方法在 SQL 中实现这一点,以及如何在 LINQ 中做到这一点?
【问题讨论】:
-
你是分组还是订购?分组意味着您将获得基于分组的汇总数据,即 count()、sum()、avg()。
-
@Narnian - 有效地根据 Uid 分组,但根据组内的最近日期对组进行排序。想象一下 uid 字段就像一个 threadId,将操作分组到线程中。我希望这些动作在线程组中一起显示,但是每当插入一个动作时,具有相同 uid 的组就会被推到顶部。