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 - 使用 Merge 语句实现表数据之间的对比同步
		
原文地址:SQL Server - 使用 Merge 语句实现表数据之间的对比同步 表数据之间的同步有很多种实现方式,比如删除然后重新 INSERT,或者写一些其它的分支条件判断再加以 INSERT ...
 - Sql server的Merge语句,源表中如果有重复数据会导致执行报错
		
用过sql server的Merge语句的开发人员都应该很清楚Merge用来做表数据的插入/更新是非常方便的,但是其中有一个问题值得关注,那就是Merge语句中的源表中不能出现重复的数据,我们举例来说 ...
 - SQL server 查看什么语句在使用临时表
		
SQL server 查询那些语句在使用临时表 最近在日常的性能测试工作中发现,数据库端的IO读写比较大,有规律的2-8M的波动,数据库的版本为 SQL server 2008 sp3. 这些IO操作 ...
 - SQL Server读懂语句运行的统计信息 SET STATISTICS TIME IO PROFILE ON
		
对于语句的运行,除了执行计划本身,还有一些其他因素要考虑,例如语句的编译时间.执行时间.做了多少次磁盘读等. 如果DBA能够把问题语句单独测试运行,可以在运行前打开下面这三个开关,收集语句运行的统计信 ...
 - SQL Server中CURD语句的锁流程分析
		
我只在数据库选项已开启“行版本控制的已提交读”(READ_COMMITTED_SNAPSHOT为ON)中进行了观察. 因此只适用于这种环境的数据库. 该类数据库支持四种不同事务隔离级别,下面分别观察数 ...
 - SQL Server ---T-SQl基本语句
		
T-SQL 是 SQL-Server 的结构化查询语言. 基本数据操作语言. 基础语句 先创建表 我后面的列子都是用的这一个表,列名啥的 就大概看看吧~~ 纯粹为了学习语句,语法~~所以先创建个表吧~ ...
 - SQL Server 基本SELECT语句
		
1.SELECT 和 FROM 语句 SELECT表示执行的是查询,接着需要更知道从哪边查询数据,FROM就是限制读取的数据在哪一个表或哪几个表中,这样就构成了一个基本语句. SELECT * FRO ...
 - 转:SQL Server - 使用 Merge 语句实现表数据之间的对比同步
		
表数据之间的同步有很多种实现方式,比如删除然后重新 INSERT,或者写一些其它的分支条件判断再加以 INSERT 或者 UPDATE 等.包括在 SSIS Package 中也可以通过 Lookup ...
 - SQL Server - 使用 Merge 语句实现表数据之间的对比同步
		
表数据之间的同步有很多种实现方式,比如删除然后重新 INSERT,或者写一些其它的分支条件判断再加以 INSERT 或者 UPDATE 等.包括在 SSIS Package 中也可以通过 Lookup ...
 
随机推荐
- String Successor  zoj 3490
			
链接 [https://vjudge.net/contest/294259#problem/D] 题意 就是给你一个字符串,要进行n次操作 让你输出每次的字符串 操作规则: 1.如果有数字或者字母就忽 ...
 - PHP获取项目所有控制器方法名称
			
PHP获取项目所有控制器方法名称 //获取模块下所有的控制器和方法写入到权限表 public function initperm() { $modules = array('admin'); //模块 ...
 - CodeForces Round #552 Div.3
			
A. Restoring Three Numbers 代码: #include <bits/stdc++.h> using namespace std; ]; int a, b, c; i ...
 - 良好习惯成就Better程序员
			
慎于说Yes 在没有搞清楚开发需求.任务工作量.团队期望值之前,有前途的程序员不会轻易答应.特别是对于新人来说,比较急于表现自己,对于同事或者老板的工作安排来者不拒,精神可嘉,方法不可取.承诺太多,会 ...
 - [转帖]golang操作mysql使用总结
			
golang操作mysql使用总结 https://www.cnblogs.com/hanyouchun/ 讲解的很详细~ 前言 Golang 提供了database/sql包用于对SQL数据库的访问 ...
 - docker下载镜像received unexpected Http status:500 Internal Server Error
			
解决办法 1.就是网上说的 关闭selLinue ,但是对我就没用 2.就是不使用镜像加速 ,但是出现连接超时 3.就是加上具体版本号 结果就成功了 [root@localhost ~]# docke ...
 - 一、关于EF你不知道的事
			
一.EF 1. 只做查询 ,不用做修改时可以用,提高EF查询性能 var list = db.Users.AsNoTracking().First(x=>x.Name).ToList();
 - Python——Set集合
			
一.定义 Set集合用于表示相互之间无需的一种组合对象,包括:并集.交集.补集 二.集合的两种模式 sample = set() 初始化普通集合 sample = frozenset() 初始化不可 ...
 - springboot jpa  复合主键
			
https://blog.csdn.net/wyc_cs/article/details/9031991 创建一个复合主键类 public class LevelPostMultiKeysClass ...
 - 使用chrome开发者工具中的network面板测量网站网络性能
			
前面的话 Chrome 开发者工具是一套内置于Google Chrome中的Web开发和调试工具,可用来对网站进行迭代.调试和分析.使用 Network 面板测量网站网络性能.本文将详细介绍chrom ...