例1:

一个Customer表,一个字段Value,现请问如何查到Value中第二大的值

select max(value) from Customer where value < (select max(value) from Customer)

例2:

数据库中人表有三个属性,用户(编号,姓名,身高),查询出该身高排名第二的高度。

1、查询出没有重复值的第二名,即假如最高的身高是182,有几个人同时身高是182,则查出身高小于182的的最高的身高值。

1>、方式1:

select MAX(height) from users where height < (select MAX(height) from users );

    意义:先查询出最高的身高值,然后查询身高小于该值的最高身高。

2>、方式2:

select top 1 height from users where height not in (select MAX(height) from users) order by height desc;

  意义:先查询出最高的身高,排除该身高,然后将数据进行排序(降序),查询出当前的第一条数据。

3>、方式3:使用RANK()函数

  rank函数考虑到了over子句中排序字段值相同的情况,值相同的时候RANK函数的到的值相等。

select top 1 height from (
select *,RANK() OVER (ORDER BY height desc) AS Rank from users
) t where rank<>1

  意义:给每一个记录一个行号,使用RANK函数,去掉身高值最高的记录(重复值的rank函数获得值相同)。

  

2、查询出可能与最高身高值相同的第二名,即假如身高最高是182,有几个人同时是182身高,第二名依然是182.

1>、方式1:

select top 1 * from  (select top 2 height from users order by height desc) s order by height asc;

  意义:将数据按照身高(降序)排列,查询出前面的两项,然后将这两项按照身高升序,查询第一项目。

2>、方式2:row_number函数的用途是非常广泛,这个函数的功能是为查询出来的每一行记录生成一个序号(不考虑重复值)。

select top 1 height from (
select *,ROW_NUMBER() OVER (ORDER BY height desc) AS Rank from users
) t where rank<>1

  意义:给每一个记录一个行号ROW_NUMBER使用函数,去掉身高值最高的记录(重复值的ROW_NUMBER函数获得值不同)。

如何一条sql语句查找表中第二大值的更多相关文章

  1. 一条 SQL 语句在 MySQL 中如何执行的

    一 MySQL 基础架构分析 1.1 MySQL 基本架构概览 下图是 MySQL 的一个简要架构图,从下图你可以很清晰的看到用户的 SQL 语句在 MySQL 内部是如何执行的. 先简单介绍一下下图 ...

  2. SQL语句 在一个表中插入新字段

    SQL语句 在一个表中插入新字段: alter table 表名 add 字段名 字段类型 例: alter table OpenCourses add Audio varchar(50)alter ...

  3. 一条SQL语句在MySQL中如何执行的

    本篇文章会分析一个 sql 语句在 MySQL 中的执行流程,包括 sql 的查询在 MySQL 内部会怎么流转,sql 语句的更新是怎么完成的. 在分析之前我会先带着你看看 MySQL 的基础架构, ...

  4. mysql 操作sql语句 操作数据表中的内容/记录

    #3. 操作文件中的内容/记录 往哪张表去插入 insert into 表名指定字段(id,name) 插入要加values(针对前面字段插入)(2,mike); insert into t1(id, ...

  5. 一条SQL语句在MySQL中是如何执行的

    概览 本篇文章会分析下一个sql语句在mysql中的执行流程,包括sql的查询在mysql内部会怎么流转,sql语句的更新是怎么完成的. 一.mysql架构分析 mysql主要分为Server层和存储 ...

  6. 6-02使用SQL语句向表中插入数据

    插入语句的语法: INSERT INTO 表() VALUES(值列表) 注意事项: 1:每次插入一行数据,不能只插入半行或几列数据. 2:每一个数据值的数据类型.精度和小数位数必须与相应的列匹配. ...

  7. SQL语句,表中的列字段字符串合并 和 字符串拆分成表

    研究了两天也没有研究的很明白,但是问题做出来了, 如下表中的字段,第一级是由逗号隔开字符串,第二级是由空格隔开的字符串,现在想取空格字符串中的第几个空格前后的字符串, 所用到的工具,1.是 for x ...

  8. 写出一条SQL语句:取出表A中第31到40行记录(SQLserver,以自增长的ID作为主键,注意: 一条Sql语句:取出表A中第31到第40记录

    解1: select top 10 * from A where id not in (select top 30 id from A) 解2: select top 10 * from A wher ...

  9. SQL语句删除表中的字段只留下最新一行

    方法一 DELETE FROM A WHERE `name` in ( SELECT a.name FROM( SELECT name FROM A a GROUP BY name HAVING CO ...

随机推荐

  1. POJ 1661 Help Jimmy(DP,注意边界)

    Help Jimmy Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9399   Accepted: 3025 Descri ...

  2. 天津政府应急系统之GIS一张图(arcgis api for flex)解说(三)显示地图坐标系模块

    config.xml文件的配置例如以下: 1 2 <widget left="3" bottom="3" config="widgets/Coo ...

  3. Android View视图系统分析和Scroller和OverScroller分析

    Android  View视图系统分析和Scroller和OverScroller分析 View  视图分析         首先,我们知道.在Android中全部的视图资源(无论是Layout还是V ...

  4. Unity打包android的apk与数据包.obb分离和apk签名

    那么,通过以上图片.我相信大多数人已经知道怎么创建了,apk签名比較简单,假设之前没有签名文件.那么选择图中的Create New Keystore然后在以下两个password框中输入passwor ...

  5. Spring定时任务有时候会莫名奇妙的终止?

    最近在是使用Spring配置定时定时任务(基于xml配置使用spring自带的定时任务),一开始使用没什么问题当使用久了就会出现有些定时任务自动停止了.(关于如何使用以及如何它的原理是啥,这里不进行阐 ...

  6. dotnetcore 自动迁移工具

    费心思做了一个简单的dotnetcore迁移工具,欢迎大家使用和交流 工具所做的工作: 查找所有输入目录的子目录和上级目录,获取包含*.sln的项目集合,可批量迁移. 替换*.sln文件中的*.csp ...

  7. 移动浏览器H5页面通过scheme打开本地应用

    在移动端浏览器H5页面中,点击按钮打开本地应用主要通过 scheme 协议.本文主要介绍如何在浏览器H5页面中通过 scheme 协议打开本地应用. scheme协议定义 scheme 是一种页面之间 ...

  8. iOS开发富文本制作 图片和文字/NSMutableParagraphStyle/NSMutableAttributedString

    /NSMutableParagraphStyle/NSMutableAttributedString 组合使 NSString * titlestr=@"日产GT-R"; NSMu ...

  9. iOS知识点、面试题 之二

    最近面试,与大家分享一下,分三文给大家: 当然Xcode新版本区别,以及iOS新特性 Xcode8 和iOS 10 在之前文章有发过,感兴趣的可以查阅: http://www.cnblogs.com/ ...

  10. 为了CET-4!(二)

    directions: For this part,you are allowed 30 minutes to write an eassay.Suppose there are two option ...