leetcode地址:https://oj.leetcode.com/problems/second-highest-salary/
这个问题很有趣,是要求我们写个sql来查询Employee表里第二高的工资,如果没有第二高的,那么返回null。
+----+--------+
| Id | Salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
看到这个问题,可能很多人会想,这很简单啊,写个order by desc,然后找到第二个即可。
试试提交呗?Wrong answer,为什么?看条件约束啊,没有第二要返回null,我看到null的第一直觉是通过join搞到null值,于是有了下面的ac sql:
思路简单说就是通过全表左外联最大salary,从关联不到的salary里再找最大不就是第二大吗?
最后的结果是894ms,当然我坚信有很多更快更高效的结果。
Leetcode-Database-176-Second Highest Salary-Easy
原文:http://www.blogjava.net/changedi/archive/2015/01/27/422478.html