仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 977|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL教程之MySQL中的ROWNUM的完成

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 20:12:32 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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的成本和灵活性优势对小企业吸引力更大,他们是云数据库解决方案的重点客户群体。
柔情似水 该用户已被删除
9#
发表于 2015-3-19 22:58:40 | 只看该作者
我个人认为就是孜孜不懈的学习
只想知道 该用户已被删除
8#
发表于 2015-3-12 14:00:43 | 只看该作者
然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情
乐观 该用户已被删除
7#
发表于 2015-3-5 19:54:18 | 只看该作者
SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.
老尸 该用户已被删除
6#
发表于 2015-2-17 12:55:51 | 只看该作者
Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。
愤怒的大鸟 该用户已被删除
5#
发表于 2015-2-6 16:54:51 | 只看该作者
这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。
透明 该用户已被删除
地板
发表于 2015-1-30 23:26:25 | 只看该作者
同样会为索引视图等应用带来麻烦。看看行级和事务级的快照数据放在tempdb中,就能感觉到目前架构的尴尬。
冷月葬花魂 该用户已被删除
板凳
发表于 2015-1-22 06:22:39 | 只看该作者
代替了原来VB式的错误判断。比Oracle高级不少。
再现理想 该用户已被删除
沙发
发表于 2015-1-18 12:51:41 | 只看该作者
多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-21 04:20

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表