2015-09-27 19 views
4

記錄如何選擇最新的記錄(= MAX(從這個表order_history_id)每ORDER_ID(一個[最新]行):MySQL的最新從表

+----------------+--------+-------+----------+ 
|order_history_id|order_id|trackc |date_added| 
+----------------+--------+-------+----------+ 
|  4400  | 1000 | text | 2014-9-24| 
|  4401  | 1001 | text2 | 2014-9-26| 
|  4410  | 1000 | text3 | 2014-9-29| 
|  4411  | 1003 | text4 | 2014-9-20| 
+----------------+--------+-------+----------+ 

我當前的查詢是:

SELECT * FROM order_history WHERE trackc <> '' GROUP BY order_id 

回答

3
select t1.* from order_history t1 
inner join(
    select order_id,max(order_history_id) as order_history_id 
    from order_history 
    where ifnull(trackcode,'') <> '' 
    group by order_id 
) as t2 on t1.order_history_id = t2.order_history_id 
+0

謝謝,是否有任何理由爲什麼這個查詢不適用於以下數據?https://www.dropbox.com/s/lt4kzkj51buuimy/Screenshot%202015-09-27%2023.36.52.png?dl = 0 – Adrian

+0

是否在您的表中存在列'trackc'?如果是的話,儘量把ifnull。順便編輯我的答案。 – RubahMalam

+0

由於某種原因,我收到了錯誤的數據:https://www.dropbox.com/s/ikccfylaisjnot4/Screenshot%202015-09-27%2023.41.38.png?dl=0 order_history_id = 4885應該是ZB。 .....而不是WE123 ... – Adrian

-1
select or.order_history_id,or.order_id,or.trackc,or.date_added From order_history or 
order by or.order_id Desc 
limit 1; 
1
SELECT * from order_history as oh inner join (
    SELECT MAX(order_history_id) AS max_id, order_id 
    FROM order_history 
    GROUP BY order_id 
) as t ON t.max_id = oh.order_history_id 
WHERE oh.trackc <> '' 

子查詢提取每ORDER_ID的最大值。比加入使用order_history發現的值並提取每個字段。