从表中获取最后三个订单

时间:2017-03-31 12:14:39

标签: mysql

考虑一个包含以下列的表:

  1. 客户电子邮件ID
  2. 付款方式(COD / Netbanking / CreditCard / DebitCard)
  3. 订单ID
  4. 订单创建日期
  5. 订单状态(成功/失败/取消)
  6. 如何从SQL中的这些表中获取每位客户过去3个月的最后三个成功订单以及相关详细信息?

2 个答案:

答案 0 :(得分:1)

这在MySQL中有点痛苦。可能最简单的方法是使用变量。

您的列名不清楚。而且你有一些额外的条件,但这是基本的想法:

select t.*
from (select t.*,
             (@rn := if(@c = customerid, @rn + 1,
                        if(@c := customerid, 1, 1)
                       )
             ) as rn
      from t cross join
           (select @rn := 0, @c := '') params
      order by customerid, orderdate desc
     ) t
where rn <= 3;

您可以将其他where条件添加到子查询中。

答案 1 :(得分:0)

我希望这有帮助

SELECT *
FROM TABLENAME
WHERE OrderStatus='Success'
ORDER BY OrderCreationDate DESC
LIMIT 3;