仓酷云

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

[学习教程] MSSQL网页编程之先排序仍是先取值

[复制链接]
活着的死人 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:24:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
在Windows中MySQL以服务形式存在,在使用前应确保此服务已经启动,未启动可用netstartmysql命令启动。而Linux中启动时可用“/etc/rc.d/init.d/mysqldstart"命令,注意启动者应具有管理员权限。排序
先排序仍是先取值



标题:MSSQLSERVER和ORACLE中掏出表中依照某字段排序的前N笔记录



这个标题看上往仿佛那末复杂,两种数据库都供应ORDERBY子句.成绩应当可以水到渠成吧.



先试一下MSSQLSERVER是怎样做的:



useNorthwind;

createtableTestSort(IDinteger);

insertintotestSortvalues(3);

insertintotestSortvalues(1);

insertintotestSortvalues(4);

insertintotestSortvalues(2);

select*fromtestSort;

-----------------------------------------

ID

-----------

3

1

4

2

(4row(s)affected)



假定我们要掏出依照ID排序的前三笔记录:



selectTOP3*fromtestSortorderbyID;

-----------------------------------------

ID

-----------

1

2

3

(3row(s)affected)



很复杂,一句话就办理了.



再试一下ORACLE(这里用ORACLE9i)

SQL>createtableTestSort(IDnumber);

Tablecreated.

SQL>insertintotestSortvalues(3);

1rowcreated.

SQL>insertintotestSortvalues(1);

1rowcreated.

SQL>insertintotestSortvalues(4);

1rowcreated.

SQL>insertintotestSortvalues(2);

1rowcreated.

SQL>commit;

Commitcomplete.

SQL>select*fromtestSort;

ID

----------

3

1

4

2



ORACLE没有MSSQLSERVER中取前N笔记录的TOP语法.可是有ROWNUM能够用来完成相似功效.



SQL>select*fromTestSortwhererownum<=3orderbyID;

ID

----------

1

3

4



了局是否是有点出人意料?它并没有前往所请求的1,2,3的了局.ORACLE先依据rownum<=3的前提限定拔取一个局限汇合(3,1,4),然后再在这个汇合里举行排序.

ORDERBY子句是在符合的纪录被掏出后才起感化.

本来云云,那末在ORACLE中怎样才干完成这个功效呢?

一般我们能够接纳这类举措:

SQL>select*from(select*fromTestSortorderbyID)whererownum<=3;

ID

----------

1

2

3



有点贫苦,不外也只能如许.



不异事理,假如想从表中掏出依照某字段排序前M到N笔记录

上面的ORACLE语句是最好的:



SQL>selectIDfrom

(

selectID,rownumasconfrom

(

selectIDfromTestSortorderbyID

)

whererownum<=3/*N值*/

)

wherecon>=2;/*M值*/







ID

----------

2

3



MSSQLSERVER中也能够用相似的思绪办理此类成绩.



固然你也能够用笨一点的举措,好比用前N笔记录的汇合MINUS前M-1笔记录的汇合失掉

前M到N笔记录汇合.(有点象饶口令),不外MSSQLSERVER好象不撑持MINUS之类的汇合操纵.



看来小小的一个排序取值成绩还真不是那末复杂呢!





Black_Snail

Ligang1000@hotmail.com



接待交换,转贴请保存以上信息
从理论上讲,完全可以为数据表里的每个字段分别建一个索引,但MySQL把同一个数据表里的索引总数限制为16个。
深爱那片海 该用户已被删除
沙发
发表于 2015-1-19 11:04:02 | 只看该作者
个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。
分手快乐 该用户已被删除
板凳
发表于 2015-1-26 06:52:07 | 只看该作者
比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。
不帅 该用户已被删除
地板
发表于 2015-2-4 13:36:41 | 只看该作者
SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。
活着的死人 该用户已被删除
5#
 楼主| 发表于 2015-2-10 00:09:26 | 只看该作者
很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。
愤怒的大鸟 该用户已被删除
6#
发表于 2015-2-28 10:27:26 | 只看该作者
你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。
谁可相欹 该用户已被删除
7#
发表于 2015-3-9 22:31:51 | 只看该作者
索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。
只想知道 该用户已被删除
8#
发表于 2015-3-17 02:11:37 | 只看该作者
无法深入到数据库系统层面去了解和探究
再现理想 该用户已被删除
9#
发表于 2015-3-23 17:13:34 | 只看该作者
至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-7 02:02

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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