考虑具有以下各列的表:
客户电子邮件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
条件添加到子查询。