考虑一个包含以下列的表:
如何从SQL中的这些表中获取每位客户过去3个月的最后三个成功订单以及相关详细信息?
答案 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;