2013-03-04 146 views
0
SELECT * FROM TableName WHERE name='test' 

一旦执行了上述查询,我​​希望获得上一个和下一个id值。当然,他们不会是增量式的。我如何根据where条件获取下一个和以前的id。获取mysql的查询的前一个和下一个id值

+1

“Next”和“Previous”按什么排序/键? – 2013-03-04 09:46:13

+0

可能重复的[MYSQL:查询获取上一个和下一个视频ID?](http://stackoverflow.com/questions/1081851/mysql-query-to-get-previous-and-next-video-id) – h2ooooooo 2013-03-04 09:46:20

+0

@ Pekka웃by where = name。没有desc/asc命令。 – X10nD 2013-03-04 09:47:35

回答

1

试试下面

select * from Tablename where name = 'test' AND id = (select min(id) from Tablename where id > 4) OR id = (select max(id) from Tablename where id < 4) 
+0

没有2个差异查询我能做吗? – X10nD 2013-03-04 09:49:37

+0

尝试更新代码。 – 2013-03-04 09:53:38

+0

'echo $ row_next_prev ['next']'null null – X10nD 2013-03-04 10:00:16

1
SELECT 
    * 
FROM 
    TableName 
WHERE 
    id = (SELECT MIN(id) FROM TableName where id > 2) 
    AND id = (SELECT MAX(id) FROM TableName where id < 2) 

OR可以使用Limit

SELECT * FROM TableName WHERE `id` > 2 ORDER BY `id` ASC LIMIT 1 
UNION 
SELECT * FROM TableName WHERE `id` < 2 ORDER BY `id` DESC LIMIT 1 
+0

需要在单个查询中完成。 – X10nD 2013-03-04 09:59:30

+0

@Jean我已更新单个查询的答案 – 2013-03-04 10:03:08

+0

此查询在php/mysql中有效吗? – X10nD 2013-03-04 10:03:22

相关问题