在 SQL 中选择最大订单号
Posted
技术标签:
【中文标题】在 SQL 中选择最大订单号【英文标题】:Selecting a maximum order number in SQL 【发布时间】:2008-10-06 14:31:09 【问题描述】:我有一个记录一系列动作的表,其中一个字段记录了顺序:
user data sequence
1 foo 0
1 bar 1
1 baz 2
2 foo 0
3 bar 0
3 foo 1
使用 WHERE sequence = '0' 为每个用户选择第一个项目很容易,但是有没有办法在 SQL 中为每个用户选择最后一个项目?
我追求的结果应该是这样的:
user data sequence
1 baz 2
2 foo 0
3 foo 1
如果有任何实现特定的骗子回答,我正在使用 mysql。
【问题讨论】:
【参考方案1】:这条sql会为每个用户返回序列值最高的记录:
select a.user, a.data, a.sequence
from table as a
inner join (
select user, max(sequence) as 'last'
from table
group by user) as b
on a.user = b.user and
a.sequence = b.last
【讨论】:
嗯,我希望“内部连接(选择用户,max(sequence) 作为用户从表组中的‘最后一个’)作为 a.user = b.user 上的 b”。我猜对这个问题有不同的解释。 epheminent 在技术上是正确的(最好的一种正确)。 啊,你是对的,谢谢。他按用户分组,只显示最后的数据。 在将元变量转换为我的数据时,无论如何我都得到了正确的结果。【参考方案2】:select top 1
user
,data
,sequence
from table
order
by sequence
【讨论】:
这可能是最简单但优雅的解决方案 那只会返回一项。问题是每个用户的最大序列。 Keith 的回答很到位,您需要相关查询来执行此操作吗?以上是关于在 SQL 中选择最大订单号的主要内容,如果未能解决你的问题,请参考以下文章