MSSQL网页编程之先排序仍是先取值
在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个。 个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。 比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。 SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。 很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。 你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。 索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。 无法深入到数据库系统层面去了解和探究 至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。
页:
[1]