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语句的应用