题目要求得到第二高的薪水
解法一:limit + offset
首先介绍一下子查询的概念,最常见的就是list提取,我们也经常用的。subquery提取的可以是一个列表,一张表,或者是一个数字。
当提取的是一个数字时,我们就可以将其作为一个属性常量。在此题中我们也可以利用这个特性,首先抽取出这个常量,如果是null也可以提取出,然后将他作为常量拿出即可。
# Write your MySQL query statement below
select
(select
distinct salary
from
employee order by salary DESC limit 1 offset 1) as secondhighestsalary
解法二:ifnull
# Write your MySQL query statement below
select
ifnull((select distinct salary from employee order by salary DESC limit 1 offset 1), null) as secondhighestsalary
首先讲讲ifnull函数,这个函数和if不太一样,if可以用于属性值不同case的多路选择,但ifnull的输入一般是一个值(?也不一定)
和上面的代码对比,我们只是加了一个函数,并且完全是多余的。还是解法一好一些。