我試圖在每個用戶唯一的日期/時間之前返回所有用戶的所有數據。MySQL多行子查詢修復程序
我可以返回每個用戶的確切日期的所有數據,沒問題,但我不知道如何擴展我的查詢以返回日期小於或等於我的關鍵日期。
我有一個2表SQL數據庫。
表1-「銷售」具有所有交易的確認記錄。
- USER_ID(日期,然後各種購買信息)
表2 - 「的user_data」 具有所有瀏覽數據的記錄
- USER_ID,record_date,purchase_made(purchase_made是誤稱,因爲他們觸發了購買彈出窗口,但可能沒有實際購買 - 然後是一大堆用戶操作數據)
我需要獲取所有已購買的用戶的user_data記錄,幷包括他們的初始購買。
爲了得到確切的購買記錄,我可以使用以下命令:
SELECT *
FROM user_data
WHERE user_id IN (SELECT user_id FROM sales)
AND record_date IN (SELECT min(record_date) FROM user_data WHERE purchase_made = 1 GROUP BY user_id);
現在我真正想要的是能夠改變的是第二個「IN」爲「< =」但我可以」用一個返回多於一行的子查詢來做到這一點。
免責聲明 - 我沒有寫的數據庫,我沒有權限更改數據庫(我也不會是這樣做的正確的人)
免責聲明2 - 我知道,使用purchase_made會略微增加結果,因爲不是所有這些都是購買。但由於報告的原因,銷售表的日期可能會有足夠的時間,因此實際上LESS的可靠性低於使用與purchase_made相關的時間戳(通過在實際數據集上運行的廣泛查詢比較得到驗證)。但是,上面的任務是沒關係,他們會對「大部分」準確而感到滿意。
我對剛剛發生的事情瞭解甚少。但我想我喜歡它。我非常肯定,這個工作非常完美,你給了我一些研究的東西。謝謝Q! – Dulock
@杜洛克提問如果你不明白。如果這是你必須維護的東西,或者你正在開發工作,那麼這種概念的知識將幫助你! – xQbert