SQL Server with ties 语句

Posted Wǒ々啊申々

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server with ties 语句相关的知识,希望对你有一定的参考价值。

With ties 语句是与top、order by 语句联合使用的语句;我们在实际查询过程中会遇到这样的情况,比如查询考试为前三名的学生信息,发现有并列第三的情况,如果我们只是top 3 发现并列第三的学生信息有的没有显示出来,基于这种情况我们就需要结合with ties 语句进行查询。With ties语句作用查询出,根据top筛选出的最后一条记录中和order by [字段] 相同值的其他记录。

 

 

示例:

1、  首先我们创建一个简单的学生成绩表;然后添加10条测试数据;

  create table StudentScore(

  id int not null primary key identity(1,1),

  studentName varchar(50),

  Score int

  )

 

 insert into StudentScore(studentName,Score) VALUES

    (\'Name1\',99),

    (\'Name2\',98),

    (\'Name3\',97),

    (\'Name4\',97),

    (\'Name5\',96),

    (\'Name6\',94),

    (\'Name7\',93),

    (\'Name8\',92),

    (\'Name9\',91),

    (\'Name10\',89)

 

 select * from StudentScore

 

--现在我们找出考试成绩最好的前三名

select top 3* from StudentScore order by Score desc

 

 --现在问题来了,我们发现得分为97的有两个学生,其实他们是并列第3的,但是只显示了一个得分为97的学生信息;现在就要用到with ties 语句了  

select top 3 with ties * from StudentScore order by Score desc

 

 -- 我们这里指定了top 3 却输出了4行记录;首先查询结果返回的是基于order by score的top 3 行,然后返回top3中最后一行与score值相同的其他行;

 -- Tips:With ties 语句只能与top、order by 同时使用

 

-- 不和top 、order by 结合使用

select with ties * from studentScore

 

 -- 不和order by 结合使用

select top 3 with ties * from StudentScore

 

-- 不和top 结合使用

select with ties * from studentScore order by score

 

 

以上是关于SQL Server with ties 语句的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server - 在 INSERT 语句中使用 WITH 子句

Oracle PL/SQL CONNECT BY PRIOR ... SQL Server 中的 START WITH 语句

SQL Server WITH ROLLUPWITH CUBEGROUPING语句的应用

SQL Server WITH ROLLUPWITH CUBEGROUPING语句的应用

SQL中使用WITH 语句的查询

SQL SERVER里面的with语句有啥作用?用过的师兄请帮忙