现在的位置: 首页 > 数据库 > 正文

使用函数实现MySQL查询行号方法有什么?用变量实现MySQL查询行号方法有什么

2020年05月08日 数据库 ⁄ 共 1920字 ⁄ 字号 评论关闭

  MySQL查询行号的实现方法不止一种。MySQL查询行号可以用变量实现,当然如果你用mysql5的话,可以写个函数实现。下面学步园小编来讲解下使用函数实现MySQL查询行号方法有什么?用变量实现MySQL查询行号方法有什么?

  使用函数实现MySQL查询行号方法有什么

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

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

  CREATEFUNCTIONrno()RETURNSINTBEGINSET@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()RETURNSINTEGERBEGINSET@rno=0;RETURN1;END;SELECTrno(),s1,s2FROMtWHERErno_reset()=1;//

  实例如下:

  mysql>usedb5Databasechangedmysql>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查询行号方法有什么

  mysql>select*fromt;+------+|s1|+------+|6||6||0||19||19||1||2||3||4||0||1||2||4|+------+13rowsinset(0.44sec)mysql>set@rownum=0;QueryOK,0rowsaffected(0.00sec)mysql>select@rownum:=@rownum+1asrownum,s1fromt;+--------+------+|rownum|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.04sec)

  以上就是关于“使用函数实现MySQL查询行号方法有什么?用变量实现MySQL查询行号方法有什么”的内容,希望对大家有用。更多资讯请关注学步园。学步园,您学习IT技术的优质平台!

抱歉!评论已关闭.