如何在mysql查询结果集中得到记录行号_获取MySQL查询结果集中记录行号的方法...
如果需要在查詢語句返回的列中包括一列以指示整個結果集中記錄的行號,則ISO SQL: 2003標準建議的方法是提供ROW_NUMBER()/ RANK()函數. Oracle可以使用標準方法(版本8i或更高版本)或非標準ROWNUM. MS SQL Server在2005版中提供了ROW_NUMBER()函數. 但是在MySQL中似乎沒有這樣的系統內置功能. 盡管LIMIT可以很容易地過濾返回結果集的數量和位置,但是不能選擇過濾記錄的行號. 據說MySQL很想添加此功能取得查詢結果集總數的函數是?,但我沒有找到它.
解決方案是使用預定義的用戶變量:
復制代碼,代碼如下:
設置@mycnt = 0;
選擇(@mycnt: = @mycnt + 1)作為ROWNUM,從tblname順序按othercol順序選擇othercol;
行號信息保存在查詢結果集中的ROWNUM中. 該行編號信息的目的是當您需要根據需要根據某些規則對數據進行排序并在排序后取出一行數據時,并且您想知道該行數據在上一次排序中的位置. 例如:
復制代碼,代碼如下:
設置@mycnt = 0;
從(
選擇(@mycnt: = @mycnt + 1)作為ROWNUM,othercol
從其他名稱的tblname順序開始
)為A,其中othercol = OneKeyID;
當然,您還可以通過創建臨時表,然后執行查詢取得查詢結果集總數的函數是?,將查詢結果寫入具有auto_increment字段的臨時表中,但要考慮到臨時表在MySQL主/從模式下可能存在的問題,除非您愿意處理用PHP或其他語言腳本返回的整個結果集,否則使用此臨時用戶定義變量將更簡潔地計算與查詢結果集的每一行相對應的行號.
本文來自電腦雜談,轉載請注明本文網址:
http://www.pc-fly.com/a/tongxinshuyu/article-165187-1.html
總結
以上是生活随笔為你收集整理的如何在mysql查询结果集中得到记录行号_获取MySQL查询结果集中记录行号的方法...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乘法原理的例题和答案_吃透高考数学17个
- 下一篇: 牛客网SQL篇刷题篇(16-23)