我想從Mysql數據庫中獲取每個客戶的最新交易,其中每個客戶可能有不同數量的交易記錄。如何獲取Mysql中每個客戶的最後交易詳情?
這裏MySQL表:
此表我已經提到它有大膽的(風格)的行,這些 大膽行是最後一次交易records.I希望每一個客戶最後交易。
我除了答案是低於一個。
我需要爲這個選定的記錄MySQL查詢。
我想從Mysql數據庫中獲取每個客戶的最新交易,其中每個客戶可能有不同數量的交易記錄。如何獲取Mysql中每個客戶的最後交易詳情?
這裏MySQL表:
此表我已經提到它有大膽的(風格)的行,這些 大膽行是最後一次交易records.I希望每一個客戶最後交易。
我除了答案是低於一個。
我需要爲這個選定的記錄MySQL查詢。
SELECT cus_id,
tranc_amt,
tranc_type,
MAX(tranc_date) AS 'tranc_date'
FROM cus_tranc
GROUP BY cus_id
ORDER BY MAX(tranc_date)
OP要求任何類型的用戶進行最後的交易。這隻會爲客戶提供最近一次交易,交易類型和交易類型相同,並且很可能會返回所有表(事實上,這是通過OP的示例數據來完成的)。 – ydaetskcoR
是的你是對的,我已經編輯了我的答案。謝謝 – Bobby
謝謝Bobby,我怎麼能得到客戶表中每個客戶的最後N個交易記錄 –
您會希望以您交易日期的MAX
來查找最近的交易。由於這是一個綜合功能,您還需要GROUP BY
您的cus_id
。此結果會爲您提供客戶的最新日期,以便您可以將其餘的數據與cus_id
和tranc_date
的組合結合起來。
查詢將是這個樣子:
SELECT cus_tranc.cus_id,
cus_tranc.tranc_amt,
cus_tranc.tranc_type,
cus_tranc.tranc_date
FROM cus_tranc
INNER JOIN (
SELECT cus_id,
MAX(tranc_date) AS 'tranc_date'
FROM cus_tranc
GROUP BY cus_id) max_tranc ON cus_tranc.cus_id = max_tranc.cus_id AND cus_tranc.tranc_date = max_tranc.tranc_date
你可以看到this SQL Fiddle的這個結果。
謝謝ydaetskcoR,我怎樣才能得到客戶表中的每個客戶的最後兩個交易記錄? –
糾正我,如果我錯了,但是 - 這個答案是不正確的,你可以在SQL小提琴中看到,你得到17-may可以爲客戶1000和tranc_type是1. tranc類型1是16 - 可能是這樣這個查詢混合行 – xzdead
@xzdead好點,我已經更新了我的答案,實際上是正確的! – ydaetskcoR
你嘗試了一些作爲max(),然後在查詢中使用? –
是的,您將需要使用最大聚合,然後按您想要顯示的其餘列進行分組 – Bobby
如何獲取客戶表中每個客戶的最後兩條交易記錄? 當我試圖讓過去的5個交易細節爲每一位顧客,我得到這個錯誤 #1242 - 子查詢返回多個1行 查詢: SELECT cus_id, tranc_amt, tranc_type, tranc_date FROM cus_tranc其中cus_id =(從客戶中選擇不同的cus_id) ORDER BY tranc_date DESC LIMIT 5 –