【问题标题】:How to fetch last entered entry for a id from table MYSQL如何从表MYSQL中获取最后输入的ID条目
【发布时间】:2016-01-16 05:21:27
【问题描述】:

我有 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

我尝试了多种方法来实现相同的目标。但未能得到预期的结果。谁可以帮我这个事?

【问题讨论】:

    标签: mysql


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      试试这个

      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
      

      【讨论】:

        猜你喜欢
        • 2014-06-29
        • 2014-01-20
        • 2021-12-09
        • 2010-12-13
        • 1970-01-01
        • 1970-01-01
        • 2015-03-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多