zoukankan      html  css  js  c++  java
  • SqlServer2005 查询 第五讲 top

    今天我们来说sql命令中得参数top

    top

    • top【 最前面若干个记录,专属于SqlServer2005的语法,不可移植到其他库。oracle中是用rownum<6来实现输出前5行记录。】
      下面我们引入一个题目来分析一下这个top参数
      请查询在scott这个库中的emp表的前三条记录
        select top 3 * from emp // --这里的top 3是指前3条记录,*是指所有字段的值
                               // -- 所以在执行的时候首先会找到emp表,然后开始查询表中的                                                          
                               //-- 第一条记录,发现符合top 3 这个参数的特质,于是就输出
                               //-- 这条记录的所有字段的值
                               //--然后开始查询第二条记录......一直这样查询下去,直到查询
                               //--到第四条记录的时候       
                               //--发现不符合这个top 3这个参数的特征,于是
                               //--就,不进行输出了,也不在进行下一条记录的查询了
    

    下面我们来看一下上面这一条sql命令所执行的结果

    我们可以发现只输出了前emp表的前三条记录

    • top还可以和百分比的结合的来使用。
      例如
      select top 15 percent * from emp  //--这里我们可以把top 15 percent作为一个整体
                                       //-- 表示输出emp表的前%15个记录
                                       //-- 注意:如果表的前%15不是一个整数的话
                                       // -- 就进位
                                       //-- 假如emp表有14条,那么14*%15=2.1。
                                       //-- 则就会输出前三条记录的所有字段的值
                                       //-- 执行的顺序的话,可以参照上一条sal命令的
                                       //注释
    
    

    下面我们来看一下上面这一条sql命令所执行的结果

    我们会发现,也只输出了emp表前面的三条记录

    • 注意下面这条sql命令是错误的
      select top 2 from emp //之所以这条命令是错误的,是因为当,查询到前面两条记录的时
      //侯,这条sql命令却并没有有告诉你应该查询那个字段的值
      //或者那几个字段的值,或者所有字段的值

    我们再来分析一个题目

    • --把工资在1500到3000(包括1500 到3000)员工的工资最高前4个按降序输出
      select top 4 * (4)
        from emp (1)
            where sal between 1500 and 3000 (2)
                    order by sal desc(3)
                   //-- order by 是排序的意思,以后我会详细的说,desc是降序的意思,默认情况下是升序的意思。
                   //--我们来看这个命令的执行情况
                   //--首先会执行(1)步找到emp这个表,然后查询第一条记录
                   //--然后执行第(2)步where后面的语句,对原始的数据进行过滤
                  // --然后会执行(3)步,按照sal这个字段进行降序排序。              
                  //--注意这个第(3)步这个sql命令不好理解,我认为,在这个sql命令的底层中应该用了某种算法。
                  //-- 当第一次执行到order by sal desc的时候,他应该就能遍历整个emp表然后按照sal这个字段的值降序。
                   //-- 然后就会执行最后的第(4)步
    

    下面我们来看一下上面这一条sql命令所执行的结果

    我们可以发现输出的是4条记录,sal这个字段的值都是在1500到3000这个范围,并且这个字段的值是降序的
    今天的这一讲就到这里,下一讲我们来讲 null参数
    ***如果你们还有什么不懂的,可以加我qq485536603

  • 相关阅读:
    在C#代码中应用Log4Net(二)典型的使用方式
    在C#代码中应用Log4Net(一)简单使用Log4Net
    Windows Azure Active Directory (2) Windows Azure AD基础
    Windows Azure Virtual Network (6) 设置Azure Virtual Machine固定公网IP (Virtual IP Address, VIP) (1)
    Windows Azure Active Directory (1) 前言
    Azure China (6) SAP 应用在华登陆 Windows Azure 公有云
    Microsoft Azure News(3) Azure新的基本实例上线 (Basic Virtual Machine)
    Microsoft Azure News(2) 在Microsoft Azure上运行SAP应用程序
    Microsoft Azure News(1) 新的数据中心Japan East, Japan West and Brazil South
    Windows Azure HandBook (2) Azure China提供的服务
  • 原文地址:https://www.cnblogs.com/zjlk/p/11875974.html
Copyright © 2011-2022 走看看