
我正在嘗試獲取在 30 天內customer沒有任何新交易型別的資料deposit
例如:客戶 MS00001 不會被查詢,因為它在 30 天內還有新記錄,結果應該只顯示我 MS00002,因為它在 30 天內deposit沒有和型別deposit

同時我有一個客戶表,其中包含客戶詳細資訊。
那么我如何使用 1 個查詢來解決所有這些問題
目標輸出:交易表 30天內沒有新記錄的客戶表
下面是我試圖獲取在交易表中沒有任何新記錄的客戶的查詢。
SELECT t1.*
FROM transaction t1
LEFT JOIN (
SELECT customer FROM transaction
WHERE date <= DATE_SUB(SYSDATE(), INTERVAL 30 DAY)
) t2 ON t2customer = t1.customer
WHERE t1.date <= DATE_SUB(SYSDATE(), INTERVAL 30 DAY)
AND t1.type = 'deposit'
AND t2.customer IS NULL
ORDER BY trans_id DESC
uj5u.com熱心網友回復:
答案取決于您想從事務表中看到的內容。使用一個查詢執行此操作的最簡單方法是按客戶對交易進行分組,然后選擇最后一次存款是在 30 多天前進行的客戶。通過這種方式,您可以在 select 中查看他們最近的交易詳情
SELECT transaction.*, customer.*
FROM transaction
JOIN customer
ON customer.id = transaction.customer_id
WHERE transaction.type = "deposit"
GROUP BY customer.id
HAVING MAX(transaction.date) <= DATE_SUB(SYSDATE(), INTERVAL 30 DAY)
uj5u.com熱心網友回復:
感謝 maksa 給了我解決這個問題的想法。
下面的 SQL 得到我想要的結果。
SELECT *
FROM transaction
JOIN customers
ON customers.username = transaction.customer
WHERE transaction.type = "deposit"
GROUP BY customers.username, transaction.customer
HAVING MAX(transaction.date) <= DATE_SUB(SYSDATE(), INTERVAL 30 DAY)
如果您收到任何聚合問題,在我的情況下:phpmyadmin go to variables => sql mode
編輯 sql 模式變數并從值中洗掉 ONLY_FULL_GROUP_BY 文本,然后保存。
或遵循此:
最后,再次感謝 maksa
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/418434.html
標籤:
