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