sqlserver ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效

在sqlserver数据库创建视图时,使用order by 排序,报了这个错误,在网上查了下解决办法,改动最小的方法如下:
select top 100 percent * from tb order by score (查询前100%的数据)

参考子查询相关优化

sql="select top 30 * from data where title='"&title1&"' order by id desc" 原意是选出符合“where 条件”的记录集里的“前30条”
但是,对于该SQL语句,由于语句里同时存在where和top语句的,并且where条件列不是合适的索引,程序执行的是全表扫描,首先是查找符合where条件的记录, 而这里的top限制形同虚设。如果全表是百万级别以上的数据表,那么就这么一个简单的判断,就有可能拖垮数据库。所以需要先把符合“where条件”的记录,用一个子查询筛选出来,再在筛选结果集里选top30。
因为SQL规则规定,如果子查询里,有order ...,就必须有TOP,所以就用SELECT TOP 100 PERCENT来限定,top 100 percent是为了保证筛选出所有符合条件的数据条目。
select * from (select top 100 percent * from tb order by score) as a1 (因为你也 不知道有多少条记录,所以只能选择显示100%)'

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 常用语句: sql/plus sqlplus 'amdocs/Amdocs.Jx.China.110#@ysdb1...
    好好学习的蜗牛阅读 3,484评论 0赞 0
  • 《云水禅心⊙⊙纯音乐MV》 云水禅心(歌词版) 空山鸟语兮 人与白云栖 潺潺清泉濯我心 潭深鱼儿戏 风吹山林兮 月...
    额中砂阅读 1,192评论 7赞 10
  • 我们生活在新“奴隶”的时代,作为一名从农村走出来的80后,我是妥妥的房奴,还是一名娃奴。 记得孩子出生以后,我经常...
    晓菲心天地阅读 891评论 1赞 4
  • API:申请兼职 URL: /create_part_time_job_applicate/ 请求方式: POS...
    一曲广陵散阅读 184评论 0赞 0

友情链接更多精彩内容