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

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 に答える
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 に答える