从表格中获取MySQL最新记录

4

如何从这个表中选择最新记录(每个order_id仅有一行[最新]):=MAX(order_history_id)

+----------------+--------+-------+----------+
|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个回答

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

谢谢,这个查询在以下数据中为什么不起作用?https://www.dropbox.com/s/lt4kzkj51buuimy/Screenshot%202015-09-27%2023.36.52.png?dl=0 - Adrian
你的表中是否存在 trackc 列?如果是,尝试使用 ifnull 函数。顺便说一下,我已经编辑了我的答案。 - Hotdin Gurning
由于某种原因,我得到了错误的数据:https://www.dropbox.com/s/ikccfylaisjnot4/Screenshot%202015-09-27%2023.41.38.png?dl=0order_history_id = 4885 应该是 ZB...... 而不是 WE123... - Adrian
我现在收到了“在订单子句中未知的列'order_history.trackcode'” -> 当然这一列是存在的。 - Adrian
@Adrian,你怎么会出现错误“unknown column order_history.trackcode”,因为我在我的答案中没有放置它? - Hotdin Gurning

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 <>  ''

子查询提取每个订单ID的最大值。然后将找到的值与订单历史记录连接,并提取每个字段。

-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;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接