我的目标是从每个帐户的表格中获取最后几行(我正在尝试三行)。我没有问题得到第一排,但我无法制作前三排最近的排。举例来说,假设我有如下表:如何抓取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