1.查询表中第二高工资的Id,如果没有,返回NULL。此题的关键是如果遇到Empty set,就必须要返回NULL。

  (1)使用子查询。

select (select DISTINCT salary from employee ORDER BY salary DESC limit 1 offset 1) AS SecondHighestSalary;

  select(子查询)as result中,如果子查询是Empty set,那么得到的结果就是result下面一个NULL。

  注意:select(子查询)as result和select * from (子查询)as result的区别,前者只有一次子查询,后者是在括号中子查询得到的结果中再次查询,有两次查询。

mysql> select * from employee;
+------+------+--------+-----------+
| Id | Name | Salary | ManagerId |
+------+------+--------+-----------+
| 1 | NULL | 100 | NULL |
+------+------+--------+-----------+
1 row in set (0.00 sec) mysql> select * from (select * from employee where id = 1) as ca;
+------+------+--------+-----------+
| Id | Name | Salary | ManagerId |
+------+------+--------+-----------+
| 1 | NULL | 100 | NULL |
+------+------+--------+-----------+
1 row in set (0.00 sec) mysql> select * from (select * from employee where id = 2) as ca;
Empty set (0.00 sec) mysql> select (select * from employee where id = 1) as ca;
ERROR 1241 (21000): Operand should contain 1 column(s)
mysql> select (select salary from employee where id = 1) as ca;
+------+
| ca |
+------+
| 100 |
+------+
1 row in set (0.00 sec) mysql> select (select salary from employee where id = 2) as ca;
+------+
| ca |
+------+
| NULL |
+------+
1 row in set (0.00 sec) mysql> select (select salary,Name from employee where id = 2) as ca,ba;
ERROR 1241 (21000): Operand should contain 1 column(s)
mysql> select (select salary from employee where id = 2);
+--------------------------------------------+
| (select salary from employee where id = 2) |
+--------------------------------------------+
| NULL |
+--------------------------------------------+
1 row in set (0.00 sec)

  (2)使用IFNULL语句。

  IFNULL(value1,value2) 如果 value1 不为空返回 value1,否则返回 value2

select IFNULL((select DISTINCT salary from employee ORDER BY salary DESC limit 1 offset 1), null) AS SecondHighestSalary;

  弄清select的作用:

mysql> select (null) as shit;
+------+
| shit |
+------+
| NULL |
+------+
1 row in set (0.00 sec)

  2.

最新文章

  1. [Visual Studio Online] 移除Work Item(Feature、Backlog item、Task)
  2. 更新安装xcode7插件
  3. jquery easyui无法绑定下拉框内容
  4. 感动前行——给医学媳妇写的演讲稿(非IT类)
  5. Get Start StrangeIOC for Unity3D
  6. 使用RNSwipeViewController类库进行视图切换
  7. Angularjs里面跨作用域
  8. ABAP Open SQL 分页查询
  9. springboot项目容器化
  10. Git知识
  11. FreeType使用的总结
  12. python 子进程 subpocess 的使用方法简单介绍
  13. ORM创建多表以及多表的增删改查
  14. [HEOI2015]小Z的房间 && [CQOI2018]社交网络
  15. 遇见 TiDB
  16. vue全局后置钩子afterEach
  17. 获取验证码的URL后边为什么要加上一个值不断变化的参数?
  18. Java学习--基本数据类型的定义和运算
  19. [转载] PNG优化插件:TinyPNG for Photoshop CC
  20. macbook安装homebrew并更换清华源

热门文章

  1. JS中如何防止表单重复提交问题
  2. 微信小程序开发简述
  3. Redis 相关功能和实用命令(五)
  4. SSH Config 管理多主机
  5. javascript中数组常用的方法和属性
  6. rpm -qa|grep nfs >/dev/null 2>&1作用
  7. 第一篇:php开发环境
  8. 夯实Java基础系列19:一文搞懂Java集合类框架,以及常见面试题
  9. iframe 设置占屏幕高度 100%
  10. PHP的bcmath编译安装