繁体   English   中英

Mysql中分组依据和排序依据的用法

[英]Usage of Group By and Order By in Mysql

我试图从中读取的表

表

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

因此,我想到先使用“由TransactionDate desc排序”,然后最新行将排在最前面,如果在之后使用group by,它将给出我想要的内容。 但我认为,在使用orderby之后,我们不能再使用groupby。 所以我在这里打了个招,有没有办法用一个查询就能得到我想要的东西。

更新:

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

在此处输入图片说明

但是此输出中第一行的ID应该为9。

参见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来获得较高的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
;

参见SQLFiddle

如果你想对所有数据stackhistoryidtransactiondate排序。 然后去。

select * from stacks order by StackHistoryID, TransactionDate desc;

如果只需要最新日期,请使用@MrSimpleMind指定的@MrSimpleMind

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM