使用函数实现MySQL查询行号

 2022-10-27    353  

MySQL查询行号的实现方法不止一种,下面为您介绍的就是使用函数实现MySQL查询行号的方法,如果您对此方面感兴趣的话,不妨一看。

mysql5中使用函数实现MySQL查询行号,原理和使用变量差不多 。

使用函数实现MySQL查询行号

下面MySQL查询行号过程的目的是获得整型包含行的数量的结果集,类似其他DBMS中的ROWNUM()。我们需要一个用户变量来保存在每次调用rno()后的结果,就命名为@rno吧。

CREATEFUNCTIONrno() 
RETURNSINT 
BEGIN 
SET@rno=@rno+1; 
RETURN@rno; 
END; 

通过rno()方法的SELECT我们获得了行数。下面是调用程序的结果:

mysql>SET@rno=0;// 
QueryOK,0rowsaffected(0.00sec) 
mysql>SELECTrno(),s1,s2FROMt;// 
+-------+------+------+ 
|rno()|s1|s2| 
+-------+------+------+ 
|1|1|a| 
|2|2|b| 
|3|3|c| 
|4|4|d| 
|5|5|e| 
+-------+------+------+ 
5rowsinset(0.00sec) 

在SELECT中将@rno置零的技巧是使用了WHERE的求值功能,而这个特性在今后的MySQL中可能丢失。

CREATEFUNCTIONrno_reset() 
RETURNSINTEGER 
BEGIN 
SET@rno=0; 
RETURN1; 
END; 
SELECTrno(),s1,s2FROMtWHERErno_reset()=1;// 

实例如下:

mysql>usedb5 
Databasechanged 
mysql>delimiter// 
mysql>CREATEFUNCTIONrno() 
->RETURNSINT 
->BEGIN 
->SET@rno=@rno+1; 
->RETURN@rno; 
->END;// 
QueryOK,0rowsaffected(0.42sec) 

mysql>set@rno=0; 
->// 
QueryOK,0rowsaffected(0.00sec) 

mysql>selectrno(),s1fromt;// 
+-------+------+ 
|rno()|s1| 
+-------+------+ 
|1|6| 
|2|6| 
|3|0| 
|4|19| 
|5|19| 
|6|1| 
|7|2| 
|8|3| 
|9|4| 
|10|0| 
|11|1| 
|12|2| 
|13|4| 
+-------+------+ 
13rowsinset(0.06sec) 

mysql>CREATEFUNCTIONrno_reset() 
->RETURNSINTEGER 
->BEGIN 
->SET@rno=0; 
->RETURN1; 
->END;// 
QueryOK,0rowsaffected(0.01sec) 

mysql>selectrno(),s1fromtwhererno_reset()=1;// 
+-------+------+ 
|rno()|s1| 
+-------+------+ 
|1|6| 
|2|6| 
|3|0| 
|4|19| 
|5|19| 
|6|1| 
|7|2| 
|8|3| 
|9|4| 
|10|0| 
|11|1| 
|12|2| 
|13|4| 
+-------+------+ 
13rowsinset(0.13sec) 

  •  标签:  
  • MySQL
  •  

原文链接:https://77isp.com/post/4439.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。