仓酷云

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

[学习教程] MYSQL编程:会商: SELECT TOP N 成绩

[复制链接]
小魔女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:35:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

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学习教程、按需服务的平台,它以自助服务和便捷管理为导向,可以对环境中的资源进行调配。
活着的死人 该用户已被删除
沙发
发表于 2015-1-19 17:53:43 | 只看该作者
可以动态传入参数,省却了动态SQL的拼写。
因胸联盟 该用户已被删除
板凳
发表于 2015-1-25 23:10:56 | 只看该作者
我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力
变相怪杰 该用户已被删除
地板
发表于 2015-2-4 13:13:03 | 只看该作者
每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。
再现理想 该用户已被删除
5#
发表于 2015-2-9 23:12:10 | 只看该作者
比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。
蒙在股里 该用户已被删除
6#
发表于 2015-2-28 04:33:16 | 只看该作者
然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情
小女巫 该用户已被删除
7#
发表于 2015-3-9 20:56:02 | 只看该作者
SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。
再见西城 该用户已被删除
8#
发表于 2015-3-17 01:10:04 | 只看该作者
其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。
山那边是海 该用户已被删除
9#
发表于 2015-3-17 01:10:07 | 只看该作者
以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了
乐观 该用户已被删除
10#
发表于 2015-3-17 01:10:08 | 只看该作者
而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。
谁可相欹 该用户已被删除
11#
发表于 2015-3-23 13:52:18 | 只看该作者
只能告诉你,学好数据库语言和原理,多见识几种数据库软件,比一棵树上吊死要好。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-22 14:36

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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