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.

Mysql数据库(0)习题分析的更多相关文章

  1. mysql数据库SQL执行分析,优化前必备分析

    概述 一般我们在对mysql数据库做优化,肯定需要对慢sql去做分析才能开始优化,那么有什么分析的方法呢?下面通过对sql执行时间和执行情况来做分析. 一.SQL 执行时间分析 通过找到执行时间长的 ...

  2. MySQL数据库的性能分析 ---图书《软件性能测试分析与调优实践之路》-手稿节选

    1  .MySQL数据库的性能监控 1.1.如何查看MySQL数据库的连接数 连接数是指用户已经创建多少个连接,也就是MySQL中通过执行 SHOW  PROCESSLIST命令输出结果中运行着的线程 ...

  3. MySQL数据库的高可用性分析

    MySQL数据库是目前开源应用最大的关系型数据库,有海量的应用将数据存储在MySQL数据库中.存储数据的安全性和可靠性是生产数据库的关注重点.本文分析了目前采用较多的保障MySQL可用性方案. MyS ...

  4. PHP訪问MySql数据库 0基础篇

    在站点后台,常常要与数据库打交道.本文介绍怎样使用XAMPP来管理MySql数据库及怎样用PHP来訪问MySql数据库. 一.使用XAMPP来管理MySql数据库 首先使用XAMPP打开MySql的管 ...

  5. 腾讯云数据库团队:MySQL数据库的高可用性分析

    作者介绍:易固武,腾讯高级工程师,参与腾讯账号安全建设,腾讯数据仓库(TDW)优化改造,腾讯云数据库等项目,对大规模分布式存储和计算系统有浓厚的兴趣和经历 MySQL数据库是目前开源应用最大的关系型数 ...

  6. MySQL 数据库的高可用性分析

    MySQL数据库是目前开源应用最大的关系型数据库,有海量的应用将数据存储在MySQL数据库中.存储数据的安全性和可靠性是生产数据库的关注重点.本文分析了目前采用较多的保障MySQL可用性方案. MyS ...

  7. 分布式MySQL数据库TDSQL架构分析

    摘要:腾讯计费平台部为了解决基于内存的NoSQL解决方式HOLD平台在应对多种业务接入时的不足.结合团队在MySQL领域多年应用和优化经验,终于在MySQL存储引擎基础上,打造一套分布式SQL系统TD ...

  8. postgresql数据库和mysql数据库的对比分析

    1.Posgresql是进程模式,多进程,单线程,类似的还有Oracle.而MYSQL采用的是线程模式,单进程,多线程,对此,大家在运行数据库的时候可以查看任务管理器,SQL Server也是如此. ...

  9. 005 -- Mysql数据库引擎特点分析

    常用的数据库引擎的特点: ISAM: ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库查询次数要远大于更新次数.因此,ISAM执行读取操作的速度很快,而且不占用大量的 ...

  10. 【转载】MySQl 数据库插入加锁分析

    http://yeshaoting.cn/article/database/mysql%20insert%E9%94%81%E6%9C%BA%E5%88%B6/

随机推荐

  1. Angular 样式绑定

    1. style.propertyName [style.Css属性名] = 'Css属性值变量'/"'css属性值'" // app.component.ts export cl ...

  2. Vue-cli连接mysql

    本文把前后台一起串起来,前端使用vue-cli后台用nodejs连接数据库,vue-cli请求接口其数据是来自于mysql数据. 一.vue-cli请求接口部分 <template> &l ...

  3. Shell之Glob和RE的区别

    目录 Shell之Glob和RE的区别 参考 Glob RE Shell之Glob和RE的区别

  4. mybatis执行过程及经典面试题

    Mybatis执行流程 mybatis中xml解析是通过SqlSessionFactoryBuilder.build()方法. 初始化mybatis(解析xml文件构建成Configuration对象 ...

  5. MongoDB安装过程中出现service MongoDB failed to start,verify that you have sufficient privileges to start...

    win10系统下,安装MongoDB 64位, service MongoDB failed to start,verify that you have sufficient privileges t ...

  6. css 精灵图的使用

    精灵图的使用 1.给一个容器定义一个大小(宽高) 2.引入背景图 3.定位到自己你想要的图片位置 例如:  background-position: 0 0;  background-position ...

  7. R-forestplot包| HR结果绘制森林图

    本文首发于“生信补给站”微信公众号,https://mp.weixin.qq.com/s/2W1W-8JKTM4S4nml3VF51w 更多关于R语言,ggplot2绘图,生信分析的内容,敬请关注小号 ...

  8. Linux入门(历史与现状)

    Linux 入门之 历史与现状   Linux是一个计算机的操作系统,与windows类似,是一款系统软件.操作系统首先是一个计算机程序,使用计算机语言开发,比如C语言.VC语言.是计算机硬件和应用软 ...

  9. 1.Eclipse下载、常用配置、快捷键

    Eclipse官网下载:https://www.eclipse.org/downloads/packages/ 自动补全 位置:Eclipse——Window——Perferences——Java—— ...

  10. CSS ellipsis 与 padding 结合时的问题

    CSS 实现的文本截断 考察如下代码实现文本超出自动截断的样式代码: .truncate-text-4 { overflow: hidden; text-overflow: ellipsis; dis ...