標籤:des http io ar amp sp on ef sql
如果ID是主鍵或者有索引,可以直接尋找:
方法一:
查詢上一條記錄的SQL語句(如果有其他的查詢條件記得加上other_conditions以免出現不必要的錯誤):
select * from table_a where id = (select id from table_a where id < {$id} [and other_conditions] order by id desc limit 1) [and other_conditions];
查詢下一條記錄的SQL語句(如果有其他的查詢條件記得加上other_conditions以免出現不必要的錯誤):
select * from table_a where id = (select id from table_a where id > {$id} [and other_conditions] order by id asc limit 1) [and other_conditions];
方法二:
查詢上一條記錄的SQL語句((如果有其他的查詢條件記得加上other_conditions以免出現不必要的錯誤))
select * from table_a where id = (select max(id) from table_a where id < {$id} [and other_conditions]) [and other_conditions];
查詢下一條記錄的SQL語句(如果有其他的查詢條件記得加上other_conditions以免出現不必要的錯誤):
select * from table_a where id = (select min(id) from table_a where id > {$id} [and other_conditions]) [and other_conditions];
mySQL 查詢一條記錄的上一條和下一條記錄
下面是查詢mysql的 content表中id=3的記錄的前一條和後一條記錄的sql
把條件中的3更換成其他的ID,可以查任意ID的的前一條和後一條記錄
SELECT * FROM content WHERE id IN (SELECT CASE WHEN SIGN(id - 3) > 0 THEN MIN(id) WHEN SIGN(id - 3) < 0 THEN MAX(id) END AS id
FROM content WHERE id $amp;
mySQL 查詢一條記錄的下一條和上一條記錄