小魔女 发表于 2015-1-16 22:35:28

MYSQL编程:会商: SELECT TOP N 成绩

DBaaS系统其实具有更大的市场机遇:像其他云服务一样,DBaaS意味着更短的销售周期,更少的启动费用,持续不断的收入,也意味着比之前更多的客户。select|成绩Hi,everyone:
本贴会商SELECTTOPN成绩.
如今正在一家盘算机公司兼职,开辟ASP使用.在比来的一个贸易项目里有如许一个需求:用户在查询时,只必要依照某(些)列排序后TOP20的记录.SQLSERVER7很好地撑持了TOPN操纵,但思索到体系移植成绩,我又思索在其他几个支流DBMSs中怎样完成.鉴于只要DB2UDB7,ORACLE8i,SQLSERVER7,本贴仅会商这三个DBMS.
复杂地说,TOPN成绩就是:在SELECT中,仅选择依照某(些)列排序后TOPN的记录.思索到等值成绩,又能够分为两种:一是仅仅前往N条记录(M1),二是还包含一切于第N条等值的记录(M2).固然最内层的子查询也能够有其他的子句,大概TOPN也能够使用在没有ORDERBY的情形下,如许更复杂.

1.SQLSERVER7:用TOPN(WITHTIES)
M1:
SELECTTOPN*FROMMYTABLEORDERBYORD_COL;

M2:
SELECTTOPNWITHTIES*FROMMYTABLEORDERBYORD_COL;
注:SQLSERVER7供应了PERCENTNWITHTIES,ACCESS中供应了TOPN,但寄义是M2.

2.ORACLE8i:用ROWNUM<=N
M1:
SELECT*FROM
(SELECT*FROMMYTABLEORDERBYORD_COLDESC)
WHEREROWNUM<=N
M2:
SELECT*FROMMYTABLEWHEREORD_COL>=
(SELECTMIN(ORD_COL)FROM
(SELECT*FROMMYTABLEORDERBYORD_COLDESC)
WHEREROWNUM<=N)
ORDERBYORD_COLDESC
注重以下两种毛病用法:
WRONG1:
SELECT*FROMMYTABLE
WHEREROWID<=N
ORDERBYORD_COLDESC;

WRONG2:(由于WHEREROWNUM<=N在ORDERBY前实行)
SELECT*FROMMYTABLE
WHEREROWNUM<=N
ORDERBYORD_COLDESC;

3:DB2
用FETCHFIRSTNROWSONLY
M1:
SELECT*FROMMYTABLE
ORDERBYORD_COLDESC
FETCHFIRSTNROWSONLY
M2:
没有找到,由于DB2不同意在FROM中嵌套有ORDERBY子句的子查询.

还不分明ORACLE的M2有无更好的举措,和其他的DBMS怎样完成TOPN操纵,请其他伴侣增补.
----------------------------------------------------------------------------------
各语句已测试过,EXAMPLE:
createtablemytable(mykeyint,ord_colint);
insertintomytablevalues(1,100);
insertintomytablevalues(2,100);
insertintomytablevalues(3,99);
insertintomytablevalues(4,101);
insertintomytablevalues(5,101);

fang6/23/2000
DBaaS向客户提供了许多与其他云服务相类似的优势:一个灵活的、可扩展的MySQL学习教程、按需服务的平台,它以自助服务和便捷管理为导向,可以对环境中的资源进行调配。

活着的死人 发表于 2015-1-19 17:53:43

可以动态传入参数,省却了动态SQL的拼写。

因胸联盟 发表于 2015-1-25 23:10:56

我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力

变相怪杰 发表于 2015-2-4 13:13:03

每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。

再现理想 发表于 2015-2-9 23:12:10

比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。

蒙在股里 发表于 2015-2-28 04:33:16

然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情

小女巫 发表于 2015-3-9 20:56:02

SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。

再见西城 发表于 2015-3-17 01:10:04

其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。

山那边是海 发表于 2015-3-17 01:10:07

以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了

乐观 发表于 2015-3-17 01:10:08

而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。

谁可相欹 发表于 2015-3-23 13:52:18

只能告诉你,学好数据库语言和原理,多见识几种数据库软件,比一棵树上吊死要好。
页: [1]
查看完整版本: MYSQL编程:会商: SELECT TOP N 成绩