|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
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学习教程、按需服务的平台,它以自助服务和便捷管理为导向,可以对环境中的资源进行调配。 |
|