【发布时间】:2013-08-29 15:53:16
【问题描述】:
我正在尝试根据记录的最新状态从订单表中选择一组记录。状态保存在另一个名为 orderStatus 的表中。我的表比较复杂,但这里有一个基本的例子
表格 - 订单:
orderID
表格 - orderStatus:
orderStatusID
orderID
orderStatusCode
dateTime
一个订单可以有很多状态记录,我只是想获取我正在查询的具有最新状态代码的订单。问题是我得到了很多重复。这是一个基本示例。
select orders.orderID
from orders inner join orderStatus on orders.orderID = orderStatus.orderID
where orderStatusCode = 'PENDING'
我尝试进行内部查询以从按日期时间排序的 orderStatus 表中选择前 1 个。但我仍然看到同样的重复。有人可以为我指出正确的方向吗?
编辑:SQL Server 2008
【问题讨论】:
-
orderStatus 表中的每个 orderID 都有一条记录?我猜不是,所以你需要按 orderID 分组并按
dateTime排序。SELECT orders.orderID FROM blablabla WHERE orderStatusCode = 'PENDING' GROUP BY orders.orderID ORDER BY orderStatus.dateTime DESC -
如果你把它限制在某个数据库系统(MySQL/SQL Server/Oracle/...),甚至可能是最低版本,可能会有更简单的解决方案。
标签: sql sql-server-2008