|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
即使对于MySQL的商业化的企业版来说,也没有高昂的许可证成本,当你将其与像甲骨文和微软之类的大型专有商业数据库比较的话。假如必要在查询语句前往的列中包括一列暗示该笔记录在全部了局会合的行号,ISOSQL:2003尺度提出的办法是供应ROW_NUMBER()/RANK()函数。Oracle中可使用尺度办法(8i版本以上),也能够利用非尺度的ROWNUM;MSSQLServer则在2005版本中供应了ROW_NUMBER()函数;但在MySQL中仿佛还没有如许的体系自带功效。固然LIMIT能够很便利的对前往的了局集数目和地位举行过滤,但过滤出来的纪录的行号却没举措被SELECT到。听说MySQL是早就想增添这个功效了,但我是还没找到。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">办理办法是经由过程预界说用户变量来完成:<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">set@mycnt=0;<Pstyle="TEXT-INDENT:2em">select(@mycnt:=@mycnt+1)asROWNUM,othercolfromtblnameorderbyothercol;<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">如许查询出来的了局会合ROWNUM就保留了行编号信息。这个行编号信息的某种用处在于当你必要依据必要对数据依照某种划定规矩排序并掏出排序以后的某一行数据,而且但愿晓得这行数据在之前排序中的地位时就用得着了。好比:<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">set@mycnt=0;<Pstyle="TEXT-INDENT:2em">select*from(<Pstyle="TEXT-INDENT:2em">select(@mycnt:=@mycnt+1)asROWNUM,othercol<Pstyle="TEXT-INDENT:2em">fromtblnameorderbyothercol<Pstyle="TEXT-INDENT:2em">)asAwhereothercol=OneKeyID;<Pstyle="TEXT-INDENT:2em">固然你也能够经由过程创立一时表的办法把查询了局写到某个具有auto_increment字段的一时表中再做查询,但思索光临时表在MySQLmaster/slave形式下大概发生的成绩,用如许一时用户界说变量的体例来盘算查询了局集每行对应的行号仍是更加简便--除非你乐意在php或其他言语剧本中对前往的全部了局集再作处置。
业界普遍的声音认为:“MySQL是一个可靠的数据库系统,MySQL学习教程无论是在嵌入式或大型群集系统的部署中,还是在基于Web的应用程序领域。 |
|