想查詢某個表當前資料以及上一條和下一條的記錄,網上找了一下解決辦法都不如意,按網上的方法可以查詢出三條資料,但是當查詢的這條資料沒有上一條或下一條記錄時就不行了。現在我把解決問題的sql語句放上 :
理一下思路,明確的查詢三條語句:
select * from 表名 where id in(當前id的前乙個id值,id值,當前id的後乙個id值)
在這裡說一下為什麼是「當前id的前乙個id值」而不是「id值-1」,因為當前id的前乙個id值不一定是比它小乙個值,比如當前id值是6,那前乙個id不一定是5,可能是4或者3。
現在說一下「當前id的前乙個id值」sql怎麼寫,查詢比當前id值小的所有記錄,然後id按倒序排序取第一條,sql:
select * from 表名 where id in(當前id的前乙個id值,id值,當前id的後乙個id值)
當前id的後乙個id值,sql:
select id from 表名 where id>id值 order by id limit 1
整體的sql:
select * from 表名 where id in((select id from 表名 where idid值 order by id limit 1))
如果查出的三條記錄需要按id排序,可以在語句後面加是order by,sql:
select * from 表名 where id in((select id from 表名 where idid值 order by id limit 1)) order by id
例子:
select * from ures where id in((select id from ures where id<4 order by id desc limit 1),4,(select id from ures where id>4 order by id limit 1)) order by id
SQL查詢當前資料上一條和下一條的記錄
id是指當前資料news id引數 方法一 string presql select top 1 from news where news id id order by news id desc string nextsql select top 1 from news where news id ...
Mysql 查詢當前資料上一條和下一條的記錄
獲取當前檔案上一條與下一條記錄的原理是上一條的sql語句,從news表裡按從大到小的順序選擇一條比當前id小的新聞,下一條的sql語句,從news表裡按從小到大的順序選擇一條比當前id大的新聞。如果id是主鍵或者有索引,可以直接查詢 方法1 sql view plain copy 1.select ...
Mysql 查詢當前資料上一條和下一條的記錄
獲取當前檔案上一條與下一條記錄的原理是上一條的sql語句,從news表裡按從大到小的順序選擇一條比當前id小的新聞,下一條的sql語句,從news表裡按從小到大的順序選擇一條比當前id大的新聞。如果id是主鍵或者有索引,可以直接查詢 方法1 1.select from table a where i...