我想根據記錄的最新狀態從訂單表中選擇一組記錄。狀態保存在另一個名爲orderStatus的表中。我的表是比較複雜的,但這裏有一個基本的例子SQL選擇最新記錄
表 - 訂單:
orderID
表 - orderStatus:
orderStatusID
orderID
orderStatusCode
dateTime
一個訂單可以有多個狀態記錄,我只是想獲得具有我所查詢的最新statusCode的訂單。問題是我得到很多重複。這是一個基本的例子。
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' – Sal00m
如果您將其限制到特定的數據庫系統(MySQL/SQL Server/Oracle/...),甚至可能最低版本,可能會有更簡單的解決方案。 –