我的目標是從每個帳戶的表格中獲取最後幾行(我正在嘗試三行)。我沒有問題得到第一排,但我無法制作前三排最近的排。舉例來說,假設我有如下表:如何抓取MySQL中的最後三行
+--------+------------+------------+-----------+
| rownum | entryDate | particular | accountID |
+--------+------------+------------+-----------+
| 1 | 2015-10-01 | Item1 | 1 |
| 2 | 2015-10-01 | Item2 | 1 |
| 3 | 2015-10-02 | Item3 | 1 |
| 4 | 2015-10-02 | Item4 | 1 |
| 5 | 2015-10-02 | Item5 | 2 |
| 6 | 2015-10-03 | Item6 | 2 |
| 7 | 2015-10-05 | Item7 | 3 |
+--------+------------+------------+-----------+
我想要得到的是:
+--------+------------+------------+-----------+
| rownum | entryDate | particular | accountID |
+--------+------------+------------+-----------+
| 4 | 2015-10-02 | Item4 | 1 |
| 3 | 2015-10-02 | Item3 | 1 |
| 2 | 2015-10-01 | Item2 | 1 |
| 6 | 2015-10-03 | Item6 | 2 |
| 5 | 2015-10-02 | Item5 | 2 |
| 7 | 2015-10-05 | Item7 | 3 |
+--------+------------+------------+-----------+
凡Item1
移除,因爲它已經收到了3。 我試着下面的代碼,但它並沒有檢索最近
select rownum, entryDate, particular, accountID
from (
select entryDate, particular, accountID
@rownum := if(@account = accountID, @rownum + 1, 1) rownum,
@account := accountID
from entries
join (select @rownum := 0, @account := 0) init
order by accountID, entryDate desc) t
where t.rownum <= 3 -- Limits the rows per account
如果任何人都可以在那簡直太好了正確的方向指向我!
編輯: 然而,正是我作爲檢索的結果是:
+--------+------------+------------+-----------+
| rownum | entryDate | particular | accountID |
+--------+------------+------------+-----------+
| 3 | 2015-10-02 | Item3 | 1 |
| 2 | 2015-10-01 | Item2 | 1 |
| 1 | 2015-10-01 | Item1 | 1 |
| 6 | 2015-10-03 | Item6 | 2 |
| 5 | 2015-10-02 | Item5 | 2 |
| 7 | 2015-10-05 | Item7 | 3 |
+--------+------------+------------+-----------+
另外,如果有幫助,我對MySQL的工作臺,SQLbuddy,PHP(Web應用程序測試此)和PHPMyAdmin,他們都產生相同的結果
爲什麼會出現子選擇查詢?它的目的是什麼? –
哪個子查詢?如果您指的是'from'內的那個,那麼每個帳戶的行數可以限制爲3個。連接內的子查詢用於初始化變量。 – Jujunol
您的查詢實際上給出了您列出的結果 - 問題是什麼? – amdixon