|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你不用花费很多时间和金钱来培训现有的职工,或者去花大价钱雇用那些拥有各种证书的开发者。因为MySQL的维护和管理在很大程度上是“傻瓜型”的。MySQL几近摹拟了Oracle,SQLServer等贸易数据库的年夜部分功效,函数。但很惋惜,到今朝的版本(5.1.33)为止,仍没有完成ROWNUM这个功效。
上面先容几种详细的完成办法.
创建实行情况以下
mysql>createtabletbl(
->idintPRimarykey,
->colint
->);
QueryOK,0rowsaffected(0.08sec)
mysql>insertintotblvalues
->(1,26),
->(2,46),
->(3,35),
->(4,68),
->(5,93),
->(6,92);
QueryOK,6rowsaffected(0.05sec)
Records:6Duplicates:0Warnings:0
mysql>
mysql>select*fromtblorderbycol;
+----+------+
|id|col|
+----+------+
|1|26|
|3|35|
|2|46|
|4|68|
|6|92|
|5|93|
+----+------+
6rowsinset(0.00sec)
1.间接在程序中完成;
这应当算是效力最高的一种,也极其便利。间接在你的开辟程序中(php/asp/C/...)等中,间接初始化一个变量nRowNum=0,然后在while纪录集时,nRowNum++;然后输入便可。
2.利用MySQL变量;在某些情形下,没法经由过程修正程序来完成时,能够思索这类办法。
弱点,@x变量是connection级的,再次查询的时分必要初始化。一样平常来讲PHP等B/S使用没有这个成绩。但C/S假如connection一只坚持则要思索set@x=0
mysql>select@x:=ifnull(@x,0)+1asrownum,id,col
->fromtbl
->orderbycol;
+--------+----+------+
|rownum|id|col|
+--------+----+------+
|1|1|26|
|1|3|35|
|1|2|46|
|1|4|68|
|1|6|92|
|1|5|93|
+--------+----+------+
6rowsinset(0.00sec)
3.利用连接查询(笛卡尔积)
弱点,明显效力会差一些。
使用表的自连接,代码以下,你能够间接试一下selecta.*,b.*fromtbla,tblbwherea.col>=b.col以了解这个办法道理。
mysql>selecta.id,a.col,count(*)asrownum
->fromtbla,tblb
->wherea.col>=b.col
->groupbya.id,a.col;
+----+------+--------+
|id|col|rownum|
+----+------+--------+
|1|26|1|
|2|46|3|
|3|35|2|
|4|68|4|
|5|93|6|
|6|92|5|
+----+------+--------+
6rowsinset(0.00sec)
4.子查询
弱点,和连接查询一样,详细的效力要看索引的设置和MySQL的优化了局。
mysql>selecta.*,
->(selectcount(*)fromtblwherecol<=a.col)asrownum
->fromtbla;
+----+------+--------+
|id|col|rownum|
+----+------+--------+
|1|26|1|
|2|46|3|
|3|35|2|
|4|68|4|
|5|93|6|
|6|92|5|
+----+------+--------+
6rowsinset(0.06sec)
做为一款开源的数据库体系,MySQL无疑是一个不做的产物。它的更新速率,文档保护都不逊于几年夜贸易数据库产物。估量鄙人一个版本中,我们能够看到由MySQL本身完成的ROWNUM。
DBaaS解决方案可以降低首次投入成本,对于那些小企业来说,他们往往认为内部部署的数据库成本太高,DBaaS的成本和灵活性优势对小企业吸引力更大,他们是云数据库解决方案的重点客户群体。 |
|