sql server 查詢目前記錄的前一條和後一條記錄

來源:互聯網
上載者:User

  舉例如下:

  一張員工表tb_user,有欄位id、name、num(員工工號),則查詢id=20的員工的前一個員工和後一個員工的sql文分別是:

  前一個員工:select top 1 * from tb_user where id < 20 order by id desc(加上desc,資料庫將從表末端開始查詢);

  後一個員工:select top 1 * from tb_user where id > 20 order by id asc(加上asc,資料庫將從表的開頭開始查詢);

 

  如果要按照員工工號來查詢,例如查詢工號為36的員工的前一個員工和後一個員工,並且前一個員工是指工號比當前員工工號小

的最少的員工,而非id小的最少,而後一個員工亦指工號比當前員工大的最少的、緊鄰當前員工的員工,則sql文如下:

  前一個員工:select top 1 * from tb_user where num < 36 order by num desc;

  後一個員工:select top 1 * from tb_user where num > 36 order by num asc;

 

  當然,如果要查詢資料庫中工號為36的員工(假設該員工id=15)的前一條記錄和後一條記錄(資料庫中的記錄預設為按照id遞

增順序排列),則sql文如下:

  前一個員工:select top 1 * from tb_user where id < 15 and num = 36 order by id desc;

  後一個員工:select top 1 * from tb_user where id > 15 and num = 36 order by id asc;

 

  以此類推,查詢目前記錄的前10個、後10個記錄,只需將select top 1改為select top 10即可。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.