SQL:with ties
摘自:
http://www.cnblogs.com/huanghai223/archive/2010/10/26/1861961.html
“从100万条记录中的得到成绩最高的记录”。看到这个题目,通常我们的做法是:
select top 1 * from student order by score desc
但是这样做你会发现,如果有几个人分数并列第一,这样就只能取到一个记录。用下面的代码的话,就可以正确地取出分数第一的所有记录:
select top 1 with ties * from student order by score desc
由于以前没有用过with ties ,看到这个比较新奇,故随后MSDN,Google,Baidu之。
WITH TIES
指定从基本结果集中返回额外的行,对于 ORDER BY 列中指定的排序方式参数,这些额外的返回行的该参数值与 TOP n (PERCENT) 行中的最后一行的该参数值相同。只能在 SELECT 语句中且只有在指定了 ORDER BY 子句之后,才能指定 TOP...WITH TIES。
注意:返回的记录关联顺序是任意的。ORDER BY 不影响此规则
来源:MSDN,http://msdn.microsoft.com/zh-cn/library/ms189463.aspx
MSDN中指出这些额外的返回行的参数值与TOP n(PERCENT)行中的最后一行的该参数值相同。这个地方该怎么理解呢?其实是如果按照order by 参数排序TOP n(PERCENT)返回了前面n(pencent)个记录,但是n+1…n+k条记录和排序后的第n条记录的参数值(order by 后面的参数)相同,则n+1、…、n+k也返回。n+1、…、n+k就是额外的返回值。
举个例子,假设有如下记录:
studentID | courseName | score |
09212744 | 数据库 | 90 |
09212745 | 数据库 | 90 |
09212746 | 数据库 | 90 |
09212750 | 数据库 | 85 |
09212719 | 数据库 | 84 |
09212720 | 数据库 | 80 |
09212742 | 数据库 | 80 |
09212751 | 数据库 | 75 |
09212755 | 数据库 | 74 |
09212740 | 数据库 | 70 |
select top 6 * from student order by score desc
将返回如下结果:
图1 不带with ties(注意最好一条记录)
select top 6 with ties * from student order by score desc
将返回如下结果:
图2 带with ties(多了第7条记录)
结果一目了然,不用多解释!
插曲:其实在这个过程中有个小插曲,我首先是Google “with ties” 搜到了这篇文章With Ties on SQL Server 2005。内容如下(翻译之后):
SQL Server 2005有一个功能来选择top记录,但是我要说的是,我希望同样的数量将被加载。举例来说,我想从表中记录选择前5名的货币汇率,但是如果其中一个记录有相同的值,不要让算作前5名。通过下面的例子来证明。
- select top 5 * from batch where module = ‘CA’ order by curyrate desc
BatNbr CuryRate
000345 9900
000350 9900
000351 9900
000400 9800
000450 9750
如果你看结果,你会看到9900被加载了3次,让我们看看如果运行下面的脚步。
- select top 5 with ties * from batch where module = ‘CA’ order by CuryRate desc
BatNbr CuryRate
000345 9900
000350 9900
000351 9900
000400 9800
000450 9750
000451 9750
000475 9500
000456 9400
这就是With Ties on SQL Server 2005的全部内容,这导致我对with ties理解错误!认为加上with ties后,会返回除了重复的记录会返回n条记录,还一直认为是MSDN解释错了(⊙﹏⊙b汗)。而且这篇文章被许多人装载了,博客园和csdn都要,不知道我对那片文章理解错了还是他本来就错了。如果是我理解错了,请告诉我,谢谢!
------------>>>
SQL:with ties相关推荐
- sql select 语句_学习SQL:SELECT语句
sql select 语句 The SELECT statement is probably the most important SQL command. It's used to return r ...
- SQL:安装多个实例,修改实例端口号,和IP加端口号连接实例
原文:SQL:安装多个实例,修改实例端口号,和IP加端口号连接实例 sql server 安装第一个实例,默认实例的端口是1433, 一个库中如果有多个实例, 从第二个实例开始的端口是动态端口,需 ...
- [推荐推荐][提供下载]ORACLE SQL:经典查询练手系列文章收尾(目录篇)
[推荐推荐][提供下载]ORACLE SQL: 经典查询练手系列文章收尾(目录篇) --通过知识共享树立个人品牌. 通过近一个月的努力,<经典查询练手系列>也快告一段落,但并不代表结束,以 ...
- SQL:插入指定标识列的数据时候的小错误
异常处理汇总-数据库系列 http://www.cnblogs.com/dunitian/p/4522990.html 后期会在博客首发更新:http://dnt.dkill.net 好久没写标识系 ...
- 复杂查询练习_《从零学会SQL:简单查询》第二关 简单查询
本文分为如下六部分: 基本查询语句 指定查询条件 注释和SQL语句注意事项 运算符 字符串模糊查询 练习 所用数据表请参见前文: 陈策:<从零学会SQL:入门>第一关 入门zhuanla ...
- 【项目实战】SQL :部门花名册PBI展示
SQL :部门花名册PBI展示 编号 姓名 部门 职位 联系方式 性别 生日 住址 id(标识列) name dept position mobile gender birth_date addres ...
- Database之SQL:自定义创建数据库的各种表demo集合(以方便理解和分析sql的各种增删改查语法的具体用法)
Database之SQL:自定义创建数据库的各种表demo集合(以方便理解和分析sql的各种增删改查语法的具体用法) 目录 自定义创建数据库的各种表demo集合 具体案例 1.学生信息数据表案例
- Database之SQL:SQL之over partition by开窗函数的简介、使用方法(求各班级内各自排名/求各班级内第一名/求各班级内分数递增和等案例解析)之详细攻略
Database之SQL:SQL之over partition by开窗函数的简介.使用方法(求各班级内各自排名/求各班级内第一名/求各班级内分数递增和等案例解析)之详细攻略 目录 over part ...
- Sql:成功解决将sql输出的datetime时间格式转为常规格式
Sql:成功解决将sql输出的datetime时间格式转为常规格式 目录 SQL应用案例 1.将sql输出的datetime时间格式转为常规格式 SQL应用案例 1.将sql输出的datetime时间 ...
- SQL:使用备份向导、SQL命令、导出数据三种方式对已建立的数据库进行备份
SQL:使用备份向导.SQL命令.导出数据三种方式对已建立的数据库进行备份 目录 题目要求 解题步骤 题目要求 使用备份向导备份数据库 "DEMO_4_2_2_1"到考生文件夹&q ...
最新文章
- java c 解决方案_Java jdk安装及javac命令无效解决方案
- ABP理论学习之多租户
- 课时 28:理解容器运行时接口 CRI(知谨)
- oracle如何复制表的索引,Oracle表与索引管理
- matplotlib柱状图、面积图、直方图、散点图、极坐标图、箱型图
- [vue] 有使用过vue吗?说说你对vue的理解
- Python reload() 函数
- python3 判断文件是否存在_Python判断文件是否存在的三种方法
- pandas 非聚合函数
- hibernate 的一对多关联关系映射配置
- Codeforces 817F MEX Queries
- python处理excel的优势-推荐一款数据处理的神级工具,完全结合了Python和Excel的优势...
- 面向对象银角大王补充2-self就是调用当前方法的对象-静态字段,公有属性-封装的理解-继承的理解,普通方法,静态方法...
- python扩展库xlwt支持对_python第三方库——xlrd和xlwt操作Excel文件学习
- 智力问答选择题_智力问答题
- ubuntu 版mysql客户端工具_ubuntu安装mysql可视化工具MySQL-workbench及简单操作
- 创作短视频怎么去除素材水印?
- 祈澈姑娘:为自己代盐
- 可汗学院公开课:统计学笔记——假设检验
- Java项目:SSM汽车维修管理系统源码
热门文章
- 有一种单身叫宁缺勿滥 -- 纪念百年神棍节
- P2504 聪明的猴子
- 基于JDE的目标跟踪算法前沿研究跟进
- 标准差(Standard Deviation) 和 标准误差(Standard Error)
- ML-Agents 安装配置 【ML-Agents 官方文档翻译(ML-Agent 1.9.1,Unity 2018-2020)】
- 腾达便携无线路由 无法建立到192.168.2.1的服务器连接,Tenda腾达路由器5G信号设置步骤...
- CSS 文字背景水印
- UCenter+云市场?开源用户中心2.0时代即将开启
- 塑料填充母粒行业调研报告 - 市场现状分析与发展前景预测
- 人纪--针灸---------12.7开始