考虑具有以下各列的表:


客户电子邮件ID
付款方式(COD /网上银行/信用卡/借记卡)
订单编号
订单创建日期
订单状态(成功/失败/取消)


如何从SQL中的这些表中获取每个客户过去3个月中的最后三个成功订单以及相关详细信息?

最佳答案

这在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条件添加到子查询。

10-01 04:26
查看更多