考虑以下
mysql> create table test (f_id int, pi int, typeid int,timestamp datetime);
Query OK, 0 rows affected (0.13 sec)
mysql> insert into test values
-> (1,10,1, date_add(now(),interval 1 minute)),
-> (2,24,2, date_add(now(),interval 2 minute)),
-> (1,34,3,date_add(now(),interval 3 minute)),
-> (1,56,2,date_add(now(),interval 4 minute)),
-> (1,12,1,date_add(now(),interval 5 minute)),
-> (2,34,1,date_add(now(),interval 6 minute)),
-> (1,65,1,date_add(now(),interval 7 minute)),
-> (1,19,2,date_add(now(),interval 8 minute)),
-> (1,38,1,date_add(now(),interval 9 minute)),
-> (2,27,3,date_add(now(),interval 10 minute)),
-> (1,21,3,date_add(now(),interval 11 minute));
Query OK, 11 rows affected (0.08 sec)
Records: 11 Duplicates: 0 Warnings: 0
mysql> select * from test ;
+------+------+--------+---------------------+
| f_id | pi | typeid | timestamp |
+------+------+--------+---------------------+
| 1 | 10 | 1 | 2015-04-01 16:53:01 |
| 2 | 24 | 2 | 2015-04-01 16:54:01 |
| 1 | 34 | 3 | 2015-04-01 16:55:01 |
| 1 | 56 | 2 | 2015-04-01 16:56:01 |
| 1 | 12 | 1 | 2015-04-01 16:57:01 |
| 2 | 34 | 1 | 2015-04-01 16:58:01 |
| 1 | 65 | 1 | 2015-04-01 16:59:01 |
| 1 | 19 | 2 | 2015-04-01 17:00:01 |
| 1 | 38 | 1 | 2015-04-01 17:01:01 |
| 2 | 27 | 3 | 2015-04-01 17:02:01 |
| 1 | 21 | 3 | 2015-04-01 17:03:01 |
+------+------+--------+---------------------+
11 rows in set (0.00 sec)
查询将首先通过时间戳列的第一个条件排序和union all来获得结果,以在第一个记录后得到其余的结果
(
select * from test where f_id = 1 and typeid = 2 order by timestamp desc limit 1
)
union all
(
select * from test t1 where t1.f_id = 1 and t1.timestamp > (select max(timestamp) from test t2 where t2.f_id = 1 and t2.typeid = 2)
) ;
其结果将是
+------+------+--------+---------------------+
| f_id | pi | typeid | timestamp |
+------+------+--------+---------------------+
| 1 | 19 | 2 | 2015-04-01 17:00:01 |
| 1 | 38 | 1 | 2015-04-01 17:01:01 |
| 1 | 21 | 3 | 2015-04-01 17:03:01 |
+------+------+--------+---------------------+
你怎么知道最后一项是否有主键或时间戳? – 2015-04-01 10:51:50
有时间戳,我没有把它做成凌乱/令人困惑的表。假设列表根据输入时间。 – aliaktas 2015-04-01 11:04:29