偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

MySQL查詢結(jié)果集中得到記錄行號(hào)的實(shí)現(xiàn)

數(shù)據(jù)庫(kù) MySQL
我們可以通過預(yù)定義用戶變量來實(shí)現(xiàn)在MySQL查詢結(jié)果集中得到記錄行號(hào),下文對(duì)該方法作了比較詳細(xì)的分析,供您參考。

如果要在MySQL查詢結(jié)果集中得到記錄行號(hào),應(yīng)該如何實(shí)現(xiàn)呢?下面就為您介紹一個(gè)MySQL查詢結(jié)果集中得到記錄行號(hào)的方法,希望對(duì)您能有所啟迪。

在計(jì)算某特定記錄在查詢結(jié)果中的位置用到。

如果需要在查詢語句返回的列中包含一列表示該條記錄在整個(gè)MySQL查詢結(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 中似乎還沒有這樣的系統(tǒng)自帶功能。雖然 LIMIT 可以很方便的對(duì)返回的結(jié)果集數(shù)量和位置進(jìn)行過濾,但過濾出來的記錄的行號(hào)卻沒辦法被 SELECT 到。據(jù)說 MySQL 是早就想增加這個(gè)功能了,但我是還沒找到。

解決方法是通過預(yù)定義用戶變量來實(shí)現(xiàn):

  1. set @mycnt = 0;   
  2.  
  3. select (@mycnt := @mycnt 1) as ROWNUM , othercol from tblname order by othercol;   
  4.  

這樣查詢出來的結(jié)果集中 ROWNUM 就保存了行編號(hào)信息。這個(gè)行編號(hào)信息的某種用途在于當(dāng)你需要根據(jù)需要對(duì)數(shù)據(jù)按照某種規(guī)則排序并取出排序之后的某一行數(shù)據(jù),并且希望知道這行數(shù)據(jù)在之前排序中的位置時(shí)就用得著了。比如:

  1. set @mycnt = 0;   
  2.  
  3. select * from (   
  4.  
  5. select (@mycnt := @mycnt 1) as ROWNUM , othercol   
  6.  
  7. from tblname order by othercol   
  8.  
  9. ) as A where othercol=OneKeyID;   
  10.  

當(dāng)然你也可以通過創(chuàng)建臨時(shí)表的方法把查詢結(jié)果寫到某個(gè)擁有 auto_increment 字段的臨時(shí)表中再做查詢,但考慮到臨時(shí)表在 MySQL master / slave 模式下可能產(chǎn)生的問題,用這樣臨時(shí)用戶定義變量的方式來計(jì)算查詢結(jié)果集每一行對(duì)應(yīng)的行號(hào)還是更為簡(jiǎn)潔 -- 除非你愿意在 PHP 或其他語言腳本中對(duì)返回的整個(gè)結(jié)果集再作處理。
 

 

【編輯推薦】

MySQL隨機(jī)查詢的實(shí)現(xiàn)方法

MySQL查詢分頁的優(yōu)化

用變量實(shí)現(xiàn)MySQL查詢行號(hào)

MySQL查詢結(jié)果按某值排序

MySQL查詢中的非空問題

責(zé)任編輯:段燃 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-04-06 10:53:36

MySQL

2010-11-25 11:57:42

MySQL查詢行號(hào)

2010-11-25 11:51:53

MySQL查詢行號(hào)

2010-11-09 12:20:53

SQL Server查

2010-10-13 16:59:28

mysql查詢

2010-11-25 14:05:15

MySQL查詢中間記錄

2010-11-25 15:43:02

MYSQL查詢重復(fù)記錄

2010-11-25 14:45:19

MySQL查詢結(jié)果

2010-06-10 17:59:05

2010-10-14 14:28:03

Mysql多表查詢

2010-11-22 15:56:34

Mysql多表查詢

2011-05-05 11:12:11

EFSQL

2010-11-25 15:30:15

MySQL查詢結(jié)果

2010-11-25 13:56:30

MySQL查詢結(jié)果

2009-11-13 10:12:03

2010-11-25 14:52:35

MySQL隨機(jī)查詢

2010-12-21 09:47:45

SQL Server

2010-10-15 11:05:31

MYSQL查詢結(jié)果

2020-09-08 08:44:36

日志記錄基礎(chǔ)設(shè)施安全漏洞

2011-08-11 11:51:39

MySQLselect
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)