如何从表MYSQL中获取最后输入的id条目

时间:2016-01-16 05:21:28

标签: mysql

我有3张桌子:

订单会经历多个州。所以每个州都有table_orderstatus中的条目。 Statusdate将在那里,但在此示例中未显示。

实施例

table_orders - orderid,ordervalue;

1- 500
2- 1000
3- 8000
4- 10000

table_orderstatus - orderid,statusid,statusdate; (orderid,statusid)

1- 1 
1- 2
2- 1
2- 3
3- 1 
3- 3
3- 4
4- 1
4- 3
4- 4
4- 5
5- 1

table_statusvalues - statusid,statusvalue;

1- NEW
2- CANCEL
3- CONFIRM
4- DISPATCHED
5- DELIVERED

我想获取所有订单的order_id和最后一个状态值(不是id)。

1- CANCEL
2- CONFIRM
3- DISPATCHED 
4- DELIVERED
5- NEW

我尝试了多种方法来实现同样的目标。但是,coudn没有得到预期的结果。谁可以帮我这个事?

2 个答案:

答案 0 :(得分:1)

最后的价值:

select orderid, statusvalue from (
    select orderid, max(statusid) laststatus
    from table_orders o
          inner join table_orderstatus s on s.orderid = o.orderid
     group by o.orderid
) l
inner join table_statusvalues on statusid = laststatus

答案 1 :(得分:0)

试试这个

SELECT T.orderid, S.statusvalue
FROM (
   SELECT O1.orderid, O2.statusid
   FROM _orderstatus O1
   WHERE O1.statusdate > (
      SELECT MAX(O2.statusdate)
      FROM _orderstatus O2
      WHERE O2.orderid = O1.orderid
      AND O2.statusdate <> O1.statusdate
   )
) T, _statusvalues S
WHERE T.statusid = S.statusid