2017-03-31 57 views
0

考慮採用以下的表:取最近三個訂單

  1. 客戶電子郵件ID
  2. 付款方法(COD /網路銀行/信用卡式/借記卡)
  3. 訂單ID
  4. 訂單創建日期
  5. 訂單狀態(成功/失敗/取消)

如何從SQL中的這些表格中獲取每個客戶過去3個月的最後三個成功訂單以及相關詳細信息?

+1

看到這篇文章:HTTPS://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per- group-in-sql/ –

回答

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條件的子查詢。

0

我希望這有助於

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

這將返回3行,OP要爲每個客戶3行* –