MySQL:获取有条件的最后2个用户订单

时间:2016-03-11 04:10:33

标签: mysql sql

我意识到我的第一个解释是有点偏离,所以我回忆起我的想法并重新提出了我的第一个问题。我要感谢@Jitendra Sanghani和@StanislavL提供的第一批答案。

如果他们最后一次订单是在2016年3月,并且倒数第二次是在2015年12月(或任何其他较旧的日期),那么MySQL是否有可能获得最后2个用户订单?这意味着如果他们现在订购,但他们之前的订单是2016年1月,那么他们不会计算(因为我们正在考虑2015年12月)。

我目前有一个包含字段ordersid, fullname,的示例created表。

2 个答案:

答案 0 :(得分:3)

您可以编写两个查询,然后在内部加入,如

从订单中选择一个。*,其中orderdate> <>作为内部联接(从订单中选择b.orderdate,其中orderdate< =<>)

在你的情况下查询将是

select a.* from orders where a.orderdate >= '2016-03-01' as a 
inner join 
(select b.orderdate from orders where orderdate <= '2015-12-31') as b 
ON a. orderid = b.orderid

我认为这可以解决你的问题。

答案 1 :(得分:0)

select o.id, 
       sum(when case o.created>'2016-03-01' then 1 else 0 end) as current_count,
       sum(when case o.created<='2016-03-01' then 1 else 0 end) as prev_count
from orders o
group by o.id
having current_count>0 and prev_count>0

校正