Top这个关键字,大家都不陌生~尤其是很多时候打开SSMS的时候右键表名,选择前1000行的时候,就可以见到编译出来的语句 Select top 1000 XXX from XXX

好~我们先看看Top 的语法

[
    TOP (expression) [PERCENT]
    [ WITH TIES ]
]
Top 关键字支持实际行数 Top 50 查询前50行,使用这种模式的话,Top 后面必须跟一个整数(传入浮点是会报错的)
或者使用 Top 10 PERCENT 查询前10%的数据,使用这种方法的话,Top 后面可以跟一个浮点,但是会向上取整。
WITH TIES 的选项则表示是否将与最后一行排序一样的行显示出来。使用这个选项将有可能得出超出 Top 关键字之后所写入的数量。
对于select 这个是控制返回多少行数据,而对于insert ,update ,delete,merge的话,则是控制要操作多少行的数据。
官方文档说建议使用Top的时候始终配合Order By来使用。我的理解是这样纸的。
有一个语句
select top 5 AA,BB,CC
    from Tablea
这种Top 是随机排序的,随机的依据取决于当时的查询计划是怎么执行,如果没有使用Order By的话,有可能当数据量有所变化,那就会出现不同的结果。
所以如果需要一个稳定的结果,那么建议如果使用Top关键字,那么后面就配套一个Order By 结果才稳定 Select :
Select top (50) * from Table --里面的50可以是支持使用变量来传值 Insert
Insert 的用法主要使用
insert top (5) into table (XXX) values (XXX) --这里面的顺序与Values 后面跟的顺序一致
如果用Insert Select 的时候,则与Select 的Top 用法一致 Update /Delete /Merge :
Update/Delete Top (50) 如果使用此方式,那么将会是随机更新/删除,也有可能引起预想不到的结果。然而Update/Delete 却是不支持Order by的。
如果需要稳定的排序,可以采取子查询先把需要更新/删除的结果集查询出来。 update a set XX=AA
  from (select top 5 * from table order by BBB) a 可以考虑这种处理方法。 PS:另外我觉得Top 这个关键字有一个比较好的应用场景,就是当需要一次性处理大量数据的时候,可以借助Top关键字来分批处理。避免因为一次处理过量的数据引起大量的事务日志。也比较安全

今天说一下Top ~的更多相关文章

  1. ADO.NET一小记-select top 参数问题

    异常处理汇总-后端系列 http://www.cnblogs.com/dunitian/p/4523006.html 最近使用ADO.NET的时候,发现select top @count xxxx 不 ...

  2. Configure a VLAN on top of a team with NetworkManager (nmcli) in RHEL7

    SOLUTION VERIFIED September 13 2016 KB1248793 Environment Red Hat Enterprise Linux 7 NetworkManager ...

  3. 在UPDATE中更新TOP条数据以及UPDATE更新中使用ORDER BY

    正常查询语句中TOP的运用: SELECT TOP 1000 * FROM MP_MemberGrade   随意更新一张表中满足条件的前N条数据: UPDATE TOP (1) MP_Member ...

  4. Configure a VLAN (on top of a bond) with NetworkManager (nmcli) in RHEL7

    not on top of a bond Environment Red Hat Enterprise Linux 7 NetworkManager Issue Need an 802.1q VLAN ...

  5. linux的top命令参数详解

    简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按 ...

  6. linux-linux top 命令各参数详解

    简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按 ...

  7. Top Coder算法题目浏览器

    作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://zh.lucida.me/blog/top-code-offline-browser/ 关于 左耳朵耗子 ...

  8. Linux命令:ps,netstat,top

    ps ps用于查看当前运行的进程.如果想查看动态的进程信息,可以使用top命令.查看详细命令帮助使用man ps. ps最常用的选项组合就是ps aux: # ps aux USER PID %CPU ...

  9. SQL Server中TOP子句可能导致的问题以及解决办法

    简介      在SQL Server中,针对复杂查询使用TOP子句可能会出现对性能的影响,这种影响可能是好的影响,也可能是坏的影响,针对不同的情况有不同的可能性.      关系数据库中SQL语句只 ...

  10. SELECT TOP 1 比不加TOP 1 慢的原因分析以及SELECT TOP 1语句执行计划预估原理

    本文出处:http://www.cnblogs.com/wy123/p/6082338.html 现实中遇到过到这么一种情况: 在某些特殊场景下:进行查询的时候,加了TOP 1比不加TOP 1要慢(而 ...

随机推荐

  1. 【Java每日一题】20161111

    package Nov2016; import java.io.Serializable; public class Ques1111 implements Serializable{ private ...

  2. 内存只有4G的MBP要怎么破

    开发工具包括浏览器都是极占内存的,没有个8G根本不行啊. 怎一个慢字了得? 补记: 放弃谷歌浏览器是正道

  3. Android总结篇系列:Android开发环境搭建

    工欲善其事必先利其器. 1.安装并配置Java环境进入Java oracle官网,当前网址如下:http://www.oracle.com/technetwork/java/javase/downlo ...

  4. Javascript 语言精粹 代码片段合集

    Javascript 语言精粹 代码片段合集 标签:Douglas-Crockford Javascript 最佳实践 原文链接 更好的阅读体验 使用一个method 方法定义新方法 Function ...

  5. js的一些属性

    js attribute(): setAttribute():element.setAttribute(name,balue) getAttribute():element.getAttribute( ...

  6. PhotoSwipe - 移动开发必备的 iOS 风格相册

    PhotoSwipe 是一个专门针对移动设备的图像画廊,它的灵感来自 iOS 的图片浏览器和谷歌移动端图像. PhotoSwipe 提供您的访客熟悉和直观的界面,使他们能够与您的移动网站上的图像进行交 ...

  7. 65行 JavaScript 代码实现 Flappy Bird 游戏

    飞扬的小鸟(Flappy Bird)无疑是2014年全世界最受关注的一款游戏.这款游戏是一位来自越南河内的独立游戏开发者阮哈东开发,形式简易但难度极高的休闲游戏,很容易让人上瘾. 这里给大家分享一篇这 ...

  8. Plyr – 简单,灵活的 HTML5 媒体播放器

    Plyr 是一个简单的 HTML5 媒体播放器,包含自定义的控制选项和 WebVTT 字幕.它是只支持现代浏览器,轻量,方便和可定制的媒体播放器.还有的标题和屏幕阅读器的全面支持. 在线演示      ...

  9. react native 学习一(环境搭配和常见错误的解决)

    react native 学习一(环境搭配) 首页,按照http://reactnative.cn/docs/0.30/getting-started.html#content上的介绍,下载安装pyt ...

  10. swift学习笔记之-扩展(Extensions)

    //扩展(Extensions) import UIKit /*扩展(Extensions):扩展 就是为一个已有的类.结构体.枚举类型或者协议类型添加新功能.这包括在没有权限获取原始源代码的情况下扩 ...