2013-07-02 29 views
2

order_status_data2 table
從表中選擇唯一的數據與類似ID數據字段

我想從上面(order_status_data2)表中檢索唯一值。我想獲得最新的訂單,其中包含以下字段:id,order_id和status_id。高id字段值表示最近的即
4項 - 56 - 4
8 - 52 - 6
7 - 6 - 2
9 - 8 - 2

我曾嘗試下面的查詢但沒有得到期望的結果,尤指STATUS_ID領域:

select max(id) as id, order_id, status_id from order_status_data2 group by order_id 

這是結果我得到:
query results


我將如何制定查詢來獲得所需的結果?

回答

3

像這樣:

select d.* 
from order_status_data2 d 
join (select max(id) mxid from order_status_data2 group by order_id) s 
    on d.id = s.mxid 
5
SELECT o.id, o.order_id, o.status_id 
FROM order_status_data2 o 
JOIN (SELECT order_id, MAX(id) maxid 
     FROM order_status_data2 
     GROUP BY order_id) m 
ON o.order_id = m.order_id AND o.id = m.maxid 

SQL Fiddle

在您的查詢,你沒有把上status_id任何約束,所以它從該組中的任意行把它撿起。選擇max(id)不會使其從恰好具有該值的行中選擇status_id,您需要一個連接爲所有非聚合列選擇特定行。

2

試試這個Query.This將幫助您

SELECT id ,orderid,statusid 
FROM table_name 
WHERE id IN 
(
    SELECT max(id) FROM table_name GROUP BY orderid 
) 
ORDER BY statusid 

你可以參考這個Sql_Fiddle_link它使用你的榜樣。

相關問題