在Mysql中使用Group By和Order By

时间:2013-09-06 06:57:45

标签: mysql group-by sql-order-by

我尝试阅读的表格

table

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

所以我想首先使用“按TransactionDate desc排序”然后最新的行将是最高的,如果我之后使用group,它将给出我想要的东西。但我认为,使用orderby后我们不能使用groupby。所以我来到这里,是否有任何方法可以使用单个查询获得我想要的东西。

更新:

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

enter image description here

但此输出中第一行的ID应为9.

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

如果您希望stackhistoryid的{​​{1}}的所有数据都已排序。然后去。

transactiondate

如果您只需要最新日期,请查看select * from stacks order by StackHistoryID, TransactionDate desc;

指定的结果