如何在查询中实现下一行和上一行

时间:2012-07-26 12:30:47

标签: mysql

我在MYSQL中有这样的表:

SELECT * FROM test_table 

id  u_id  name   date
1   101   name2  2012-05-14
2   305   name3  2012-05-11
3   506   name4  2012-05-05
4   207   name5  2012-05-12
5   108   name6  2012-05-03

SELECT id,u_id from test_table order by date;

id  u_id

5    108
3    506
2    305
4    207
1    101

我有一个应用程序,可以显示这些内容

在点击任何u_id时,它会将我带到另一个显示详细信息的页面 现在我想写一个查询,它将给我下一条记录

我如何从这里获得下一条记录,如

当我说u_id>305时,它会给我207? 和u_id<305它应该给我506

3 个答案:

答案 0 :(得分:2)

我认为这就是你要找的东西:

SELECT id, u_id 
FROM test_table 
WHERE uid > 305
ORDER BY date ASC
LIMIT 1;

SELECT id, u_id 
FROM test_table 
WHERE uid < 305
ORDER BY date DESC
LIMIT 1;

答案 1 :(得分:0)

试试这个:

 select id,u_id from
  (SELECT id,u_id,@rownum:= @rownum+1 AS Sno 
  from test_table , (SELECT @rownum:=0) r;
  order by date)a
  where Sno=<@ID-1/+1>

让我们说如果你当前的Sno = 5然后4将给出前一个记录而6将给出下一个记录

答案 2 :(得分:0)

鉴于u_id为305,要按日期获取下一条记录:

SELECT id,u_id 
FROM test_table a
WHERE a.date > (SELECT date FROM test_table b WHERE b.u_id = 305)
ORDER BY a.date
LIMIT 1;

按日期记录以前的记录:

SELECT id,u_id 
FROM test_table a
WHERE a.date < (SELECT date FROM test_table b WHERE b.u_id = 305)
ORDER BY a.date DESC
LIMIT 1;