Sql学习第三天——SQL 关于with ties介绍

关于with ties

对于with ties一般是和Top , order by相结合使用的,会查询出最后一条数据额外的返回值(解释:如果按照order by 参数排序TOP n(PERCENT)返回了前面n(pencent)个记录,但是n+1…n+k条记录和排序后的第n条记录的参数值(order by 后面的参数)相同,则n+1、…、n+k也返回。n+1、…、n+k就是额外的返回值)。

实验:

实验用表(PeopleInfo):


代码如下:

CREATE TABLE [dbo].[PeopleInfo](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[numb] [nchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
[phone] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]

向表中插入数据:


代码如下:

insert into peopleinfo([name],numb,phone) values ('李欢','3223','1365255')
insert into peopleinfo([name],numb,phone) values ('李欢','322123','1')
insert into peopleinfo([name],numb,phone) values ('李名','3213112352','13152')
insert into peopleinfo([name],numb,phone) values ('李名','32132312','13342563')

查看插入的全部数据:


代码如下:

select * from dbo.PeopleInfo

结果图:

操作步骤1:不用with ties

代码:


代码如下:

select top 3 * from peopleinfo order by [name] desc

结果如图:

操作步骤2:用with ties

代码:


代码如下:

select top 3 with ties * from peopleinfo order by [name] desc

结果如图:

如果with ties不与top和order by结合使用的错误示范:

操作步骤1:不与order by结合使用,只和top结合使用:

代码:


代码如下:

select top 3 with ties * from peopleinfo

错误消息如图:

    操作步骤2:不与top结合使用,只和order by结合使用:

代码:


代码如下:

select with ties * from peopleinfo order by [name] desc

错误消息如图:

操作步骤3:不与top结合使用也不与order by结合使用:

代码:


代码如下:

select with ties * from peopleinfo

错误消息如图:

(0)

相关推荐

  • Sql Server 分组统计并合计总数及WITH ROLLUP应用

    WITH ROLLUP 在生成包含小计和合计的报表时,ROLLUP 运算符很有用.ROLLUP 运算符生成的结果集类似于 CUBE 运算符所生成的结果集. 复制代码 代码如下: SELECT [Source], COUNT(*) AS OrderTotal FROM [ExternalOrder] Where OrderStatus=1 AND (CheckPayment=1 ) and TicketDate >= '2012-11-1' AND TicketDate < '2012-12-1

  • sqlserver中with(nolock)深入分析

    在查询语句中使用 NOLOCK 和 READPAST 处理一个数据库死锁的异常时候,其中一个建议就是使用 NOLOCK 或者 READPAST .有关 NOLOCK 和 READPAST的一些技术知识点: 对于非银行等严格要求事务的行业,搜索记录中出现或者不出现某条记录,都是在可容忍范围内,所以碰到死锁,应该首先考虑,我们业务逻辑是否能容忍出现或者不出现某些记录,而不是寻求对双方都加锁条件下如何解锁的问题. NOLOCK 和 READPAST 都是处理查询.插入.删除等操作时候,如何应对锁住的数

  • SQLServer 数据库的数据汇总完全解析(WITH ROLLUP)

    现有表A,内容如下: 编码 仓库 数量 01 A 6 01 B 7 02 A 8 02 B 9 现在想按编码查询出这种格式: 01 A 6 01 B 7 汇总小计: 13 02 A 8 02 B 9 汇总小计: 17 问:该如何实现? 乍一看,好像很容易,用group by好像能实现?但仔细研究下去,你又会觉得group by也是无能为力,总欠缺点什么,无从下手.那么,到底该如何做呢?别急,SQL Server早就帮我们做好了,下面,跟我来. 首先,让我们来看一段话: 在生成包含小计和合计的报表

  • Sql学习第三天——SQL 关于CTE(公用表达式)的递归查询使用

    关于使用CTE(公用表表达式)的递归查询----SQL Server 2005及以上版本 公用表表达式 (CTE) 具有一个重要的优点,那就是能够引用其自身,从而创建递归 CTE.递归 CTE 是一个重复执行初始 CTE 以返回数据子集直到获取完整结果集的公用表表达式. 当某个查询引用递归 CTE 时,它即被称为递归查询.递归查询通常用于返回分层数据,例如:显示某个组织图中的雇员或物料清单方案(其中父级产品有一个或多个组件,而那些组件可能还有子组件,或者是其他父级产品的组件)中的数据. 递归 C

  • Sql学习第三天——SQL 关于with ties介绍

    关于with ties 对于with ties一般是和Top , order by相结合使用的,会查询出最后一条数据额外的返回值(解释:如果按照order by 参数排序TOP n(PERCENT)返回了前面n(pencent)个记录,但是n+1-n+k条记录和排序后的第n条记录的参数值(order by 后面的参数)相同,则n+1.-.n+k也返回.n+1.-.n+k就是额外的返回值). 实验: 实验用表(PeopleInfo): 复制代码 代码如下: CREATE TABLE [dbo].[

  • Sql学习第四天——SQL 关于with cube,with rollup和grouping解释及演示

    关于with cube ,with rollup 和 grouping 通过查看sql 2005的帮助文档找到了CUBE 和 ROLLUP 之间的具体区别: CUBE 生成的结果集显示了所选列中值的所有组合的聚合.ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合. 再看看对grouping的解释: 当行由 CUBE 或 ROLLUP 运算符添加时,该函数将导致附加列的输出值为 1:当行不由 CUBE 或 ROLLUP 运算符添加时,该函数将导致附加列的输出值为 0. 仅在与包含 C

  • SQL学习笔记三 select语句的各种形式小结

    复制代码 代码如下: Select * from T_Employee select FName,FAge from T_Employee select FName from T_Employee where FSalary < 5000 select FName as 姓名,FAge as 年龄,FSalary as 月薪from T_Employee where FSalary < 5000 select FName as 姓名,FAge as 年龄,FSalary as 月薪,getda

  • SQL中的三种去重方法小结

    目录 distinct group by row_number 在使用SQL提数的时候,常会遇到表内有重复值的时候,比如我们想得到 uv (独立访客),就需要做去重. 在 MySQL 中通常是使用 distinct 或 group by子句,但在支持窗口函数的 sql(如Hive SQL.Oracle等等) 中还可以使用 row_number 窗口函数进行去重. 举个栗子,现有这样一张表 task: task_id order_id start_time 1 123 2020-01-05 1 2

  • pandas学习之txt与sql文件的基本操作指南

    目录 前言 1.导入txt文件 2.导入sql文件 2.1 安装依赖库pymysql 3.小结 总结 前言 Pandas是python的一个数据分析包,是基于NumPy的一种工具提供了大量数据结构和函数,可以很方便的处理结构化数据,常见数据结构有: Series:一维数组,与Numpy中的一维array类似. DataFrame:二维的表格型数据结构,可以将DataFrame理解为Series的容器 Time- Series:以时间为索引的Series Panel :三维的数组,可以理解为Dat

  • MySQL导入sql文件的三种方法小结

    目录 一.使用工具Navicat for MySQL导入 1.打开localhost_3306,选中右击“新建数据库” 2.指定数据库名和字符集(可根据sql文件的字符集类型自行选择) 3.选中数据库下的表运行SQL文件 4.选中路径导入 二.使用官方工具MySQL Workbench导入 1.第一种方法 2.第二种方法 三.使用命令行导入 总结 一.使用工具Navicat for MySQL导入 工具的具体下载及使用方法推荐的一篇文章:https://www.jb51.net/article/

  • 三种SQL分页查询的存储过程代码

    复制代码 代码如下: --根据MAX(MIN)ID CREATE PROC [dbo].[proc_select_id] @pageindex int=1,--当前页数 @pagesize int=10,--每页大小 @tablename VARCHAR(50)='',--表名 @fields VARCHAR(1000)='',--查询的字段集合 @keyid VARCHAR(50)='',--主键 @condition NVARCHAR(1000)='',--查询条件 @orderstr VA

  • DB2 UDB V8.1管理学习笔记(三)

    正在看的db2教程是:DB2 UDB V8.1管理学习笔记(三).强制断开已有连接,停止实例并删除.  $ db2idrop -f instance_name 用于在UNIX下迁移实例. $ db2imigr instance_name 更新实例,用于实例获得一些新的产品选项或修订包的访问权. $ db2iupdt instance_name 获取当前所处的实例. $ db2 get instance 当更新实例级别或数据库级别的参数后,有些可以立即生效,有些需要重新启动实例才可生效.immed

  • MyBatis学习教程(三)-MyBatis配置优化

    一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: <?xml version="." encoding="UTF-"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config .//EN" "http://mybatis.org/dtd/mybatis--

随机推荐