给定一张表Sno Sname Ssex Sage Sdept
0811101 李勇    男 21 计算机系
0811102 刘晨    男 20 计算机系
0811103 王敏    女 20 计算机系
0811104 张小红   女 19 计算机系
0821101 张立    男 20 信息管理系
0821102 吴宾    女 19 信息管理系
0821103 张海    男 20 信息管理系
0831101 钱小平   女 21 通信工程系
0831102 王大力   男 20 通信工程系
0831103 张姗姗   女 19 通信工程系
做了两个查询
1.SELECT TOP 3 WITH TIES Sname, Sage, Sdept 
  FROM Student 
  ORDER BY Sage DESC
结果为
Sname Sage Sdept
李勇    21 计算机系
钱小平   21 通信工程系
王大力   20 通信工程系
张立    20 信息管理系
刘晨    20 计算机系
王敏    20 计算机系
张海    20 信息管理系
2.SELECT TOP 3 Sname, Sage, Sdept 
  FROM Student 
  ORDER BY Sage DESC
结果为:
Sname Sage Sdept
李勇    21 计算机系
钱小平   21 通信工程系
王敏    20 计算机系
不知道系统是怎么排序的。两次排序的第三个元祖不相同,而且年龄相同的顺序和源表的顺序不一样。

解决方案 »

  1.   

    WITH TIES 你查查这个语法就知道了
      

  2.   

     WITH TIES 去除并列的可能性。
      

  3.   

    1.SELECT TOP 3 WITH TIES Sname, Sage, Sdept  
      FROM Student  
      ORDER BY Sage DESC2.SELECT TOP 3 Sname, Sage, Sdept  
      FROM Student  
      ORDER BY Sage DESC楼主要清楚 with ties 的用法!重复的都会显示!
      

  4.   

    DECLARE @Temp TABLE(a int, b int) 
    --a表示开始数字,b表示结束数字,如第一条记录表示从0到33的数字 
    insert into @Temp (a,b) values (0,33) 
    insert into @Temp (a,b) values (16,46) 
    insert into @Temp (a,b) values (0,17) 
    insert into @Temp (a,b) values (0,21) 
    insert into @Temp (a,b) values (0,30) 
    insert into @Temp (a,b) values (30,67) 
    insert into @Temp (a,b) values (29,89) 
    insert into @Temp (a,b) values (63,89) 
    --如上数据,现在我要得到里面数字重叠的最大值,比如上面测试的数据这种情况,最大值会出现在30这个值上,第1,2,5,6,7条记录都包含了30,最大值是5 select top 1 with ties b.number,cnt=count(1)
    from @Temp a 
        join master..spt_values b
          on b.type='p' and b.number between a.a and a.b
    group by b.number
    order by cnt desc/*
    number      cnt
    ----------- -----------
    30          5
    16          5
    17          5(3 行受影响)
    */本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/htl258/archive/2009/04/23/4105178.aspx
      

  5.   

    http://www.cnblogs.com/huanghai223/archive/2010/10/26/1861961.html
      

  6.   

    with ties 我清楚,我是说上面20岁的学生在结果集里面的顺序是怎么确定的。第二个没有用with ties 第三条记录和用with ties的第三条不一样
      

  7.   

    第二个查询改成:SELECT TOP 7  Sname, Sage, Sdept 
      FROM Student 
      ORDER BY Sage DESC
    结果顺序和第一个查询都不一样;
    Sname Sage Sdept
    李勇 21 计算机系
    钱小平 21 通信工程系
    王敏 20 计算机系
    刘晨 20 计算机系
    张立 20 信息管理系
    张海 20 信息管理系
    王大力 20 通信工程系
    张立 20 信息管理系
    张海 20 信息管理系
    第一个查询结果是:
    Sname Sage Sdept
    李勇 21 计算机系
    钱小平 21 通信工程系
    王大力 20 通信工程系
    张立 20 信息管理系
    刘晨 20 计算机系
    王敏 20 计算机系
    张海 20 信息管理系
    难道两次是使用了不同的排序方法?