我已經嘗試了一些事情,但我最終混淆了自己。MySQL - 集團最新和加入一審
我想要做的是從表格中找到最近的記錄,並在特定日期後加入第一條記錄。
一個例子可能是
id | acct_no | created_at | some_other_column
1 | A0001 | 2017-05-21 00:00:00 | x
2 | A0001 | 2017-05-22 00:00:00 | y
3 | A0001 | 2017-05-22 00:00:00 | z
所以非常想我是找到created_at DESC
分類每個acct_no
的最新記錄,這樣的結果是由獨特的帳號從上面的記錄分組,所以這將是3
,但顯然會有多個不同日期的記錄的不同帳號。
然後,我試圖實現的是加入同一張表,並在特定日期後找到具有相同帳號的第一條記錄。
例如,記錄1
將被返回的查詢接合上acct_no
A0001
後或等於2017-05-21 00:00:00
,因爲它是後的第一個結果/等於該日期,所以這些是由created_at ASC AND created_at >= "2017-05-21 00:00:00"
(以及可能AND id != latest.id
排序。
似乎相當簡單,但我不能得到它的工作。
我只有我最近丟棄多個不同的查詢後企圖。
在這裏,我想解決第一部分是選擇最近的每個帳號:
SELECT latest.* FROM my_table latest
JOIN (SELECT acct_no, MAX(created_at) FROM my_table GROUP
BY acct_no) latest2
ON latest.acct_no = latest2.acct_no
但仍然返回所有行而不是每個最新的。
我確實在子查詢中使用了連接,但在完成之前花了很長時間才運行它,但我在acct_no
和created_at
上有索引,但我也遇到了其他問題,其中列中的不在羣裏。我知道這可以關閉,但我試圖找到一種方法來執行不需要的查詢。
參見:[?爲什麼要我爲了什麼,在我看來是一個非常簡單的SQL查詢提供MCVE(https://meta.stackoverflow.com/questions/333952/why我應該改變我的答案,請檢查它 – Strawberry
但我得到多個結果爲每個帳號而不是最近的? –