0

我在 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

4

3 回答 3

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;
于 2012-07-26T12:42:41.440 回答
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 将给出下一条记录

于 2012-07-26T12:46:07.327 回答
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;
于 2012-07-26T12:48:23.327 回答