假设此表按日期排序
id | date | customer
3 | 2009-10-01| Frank
1 | 2010-10-11| Bob
4 | 2010-11-01| Mitchel
2 | 2010-11-02| Jim
Run Code Online (Sandbox Code Playgroud)
我想进行一个查询,以便知道ID = 4得到的行
$row[0]['id'] == 1 //previous
$row[1]['id'] == 4 //most recent/current
$row[2]['id'] == 2 //next
Run Code Online (Sandbox Code Playgroud)
一个mysql唯一的解决方案是最好的,但如果有一个优雅的PHP解决方案,也会很酷.
由于表是按date列排序的,您可以运行以下查询来获取它:
对于上一行:
select * from tablename where `date` < (select `date` from tablename where id=4) order by `date` desc limit 1
Run Code Online (Sandbox Code Playgroud)对于当前行:
select * from tablename where id=4
Run Code Online (Sandbox Code Playgroud)对于下一行:
select * from tablename where `date` > (select `date` from tablename where id=4) order by `date` asc limit 1
Run Code Online (Sandbox Code Playgroud)输出:这三个查询返回的结果(一一)如下:
id date customer
1 2010-10-11 Bob
4 2010-11-01 Mitchel
2 2010-11-02 Jim
Run Code Online (Sandbox Code Playgroud)