0

我试图阅读的表格

桌子

在这里,我试图读取具有最新 TransactionDate 并按 StackHistoryID 分组的行。

所以我想首先使用“order by TransactionDate desc”然后最新的行将是顶部,如果我使用 group by 之后它会给出我想要的。但我想,我们不能在使用 orderby 后使用 groupby。所以我来到这里,有什么方法可以使用单个查询来获得我想要的东西。

更新:

select ID, Max(TransactionDate) from Stacks group by StackHistoryID

在此处输入图像描述

但是这个输出中第一行的 ID 应该是 9。

4

2 回答 2

1

See SQLFiddle

使用 MAX()

select StackHistoryID, Max(TransactionDate)
from Stacks
group by StackHistoryID;

以及带ID的简单查询,使用MAX;(如果 ID 是增量的,即更高的 id 不能有更低的日期):

select Max(ID),StackHistoryID, Max(TransactionDate)
from Stacks
group by StackHistoryID;

如果您的 ID 不是与日期一起递增的,即您可以有更高的 ID 和更低的日期......然后你可以做类似的事情:

select alls.ID, s.StackHistoryID, s.TransactionDate
from
(
  select StackHistoryID as StackHistoryID, 
         Max(TransactionDate) as TransactionDate
  from stacks
  group by StackHistoryID desc 
) s, Stacks alls
where
  alls.StackHistoryID = s.StackHistoryID
  and
  alls.TransactionDate = s.TransactionDate
order by StackHistoryID
;

See SQLFiddle

于 2013-09-06T06:59:02.647 回答
0

如果您想要排序stackhistoryid的所有数据。transactiondate然后去。

select * from stacks order by StackHistoryID, TransactionDate desc;

如果您只需要最新日期,请查看指定的结果@MrSimpleMind

于 2013-09-06T07:02:27.533 回答