sql中的复杂查询

时间:2015-05-28 15:21:56

标签: sql

select E.eid from Employee E
    where E.salary = (
        select max (E2.salary) from Employee E2
            where E2.salary ≠ (
                select max (E3.salary) from Employee E3);

以上查询是如何处理的? 这个查询返回什么? 处理子查询的顺序是什么?

1 个答案:

答案 0 :(得分:0)

首先最远。它首先找到E3的最高薪水,然后找到不是最高薪水(第二高),然后找到与第二高薪相匹配的员工。

这样可以返回任何排名第二高的员工的身份证(领带的行为方式使得最高薪水的每个人都会在E2级别被淘汰,返回薪水第二高的每个人)。

我怀疑你得到了downvotes因为检查sqlfiddle是微不足道的,这也会显示你的语法错误(没有关闭所有括号)。

这是一个小提琴:http://sqlfiddle.com/#!9/a7d18/6