## Mysql数据库中查询某表中第二大的数据
> leetcode记录
```
编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。
+----+--------+
| Id | Salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。
+---------------------+
| SecondHighestSalary |
+---------------------+
| 200 |
+---------------------+
```
```mysql
# 1. 查询出最大的记录,然后查询剩下记录中比该记录小的最大数据记录
select max(Salary) as SecondHighestSalary
from Employee where Salary < (select max(Salary) from Employee);
# 2. 先取得最大的,然后not in 最大的那个,在剩下的取最大的就是第二个。
select max(Salary) from Employee where Salary not in (select max(Salary) from Employee);
# 3. 使用limit offset
select Salary from Employee order by Salary limit 1,1;
select Salary from Employee order by limit 1 offset 1
```
## MySQL查找重复的电子邮箱
重复的电子邮箱存在多次。要计算每封电子邮件的存在次数,我们可以使用以下代码
```mysql
select Email, count(Email) as num
from Person
group by Email;
```
```
| Email | num |
|---------|-----|
| a@b.com | 2 |
| c@d.com | 1 |
```
向 `GROUP BY` 添加条件的一种更常用的方法是使用 `HAVING` 子句,该子句更为简单高效。
```mysql
select Email
from Person
group by Email
having count(Email) > 1;
```
知道使用group by和having。还需要记得优先顺序。where>group by>having>order by
相比于执行速度来说,下面的更快
```mysql
select distinct a.Email from Person a, Person b where a.Email=b.Email and a.Id <> b.Id;
```
- PHP获取客户端浏览器信息和版本
- PHP获取客户端操作系统信息
- 无限级分类
- git使用
- 权限检测思路
- Vue学习
- 遇到的一些问题
- PHP的编码思维和技巧
- mysql复习
- tp5
- ThinkPHP5.x 公共函数
- TP5登录注册
- TP5使用模板继承
- ThinkPHP5.1 清除缓存
- thinkphp5实现安装程序
- 安全
- tp中实现跨域代码
- ThinkPHP5.1配合pjax实现菜单栏无刷新跳转
- 获取数据库版本和数据库大小
- 模型的基本CURD操作
- 商品spu
- 全局异常处理类
- ExceptionHandler
- BaseException
- PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
- 微信小程序
- wx:for
- tp6
- 分离的一些模块
- session开启
- Spring
- 依赖注入
- 数据结构
- 二叉树
- js获取地址栏变量
- PHP设计模式
- 面向对象
- PHP1
- PHP性能优化
- Java学习
- static关键字
- 多态
- 接口、阶乘
- 大佬给的面试题
- 访问量为5000万的博客系统设计
- PHP可变参数
- Nginx的配置案例
- 求数组中的最大值,并返回数组索引
- PHP面试方向
- PHP数组工具类ArrUtil
- 字符串工具类StrUtil
- PHP使用curl发送请求
- mysql
- PHP上传base64图片处理函数
- webstorm小程序常用配置
- 邮箱正则表达式
- leetcode mysql记录
- 函数库