我在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
答案 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;