我在一次竞赛中遇到了这个sql查询。
表:员工
+------+------+--------+--------+
| ID | Name | Salary | Branch |
+------+------+--------+--------+
| 1 | e1 | 10000 | cse |
| 2 | e2 | 20000 | ece |
| 3 | e3 | 12000 | ece |
| 4 | e4 | 25000 | eee |
| 5 | e5 | 15000 | ece |
+------+------+--------+--------+
查询:
select * from Employees as e1 where e1.Branch="ece" and (select count(*) from Employees as e2 where e2.Branch="ece" and e1.Salary > e2.Salary) >= 2;
我得到的结果是:
+------+------+--------+--------+
| ID | Name | Salary | Branch |
+------+------+--------+--------+
| 2 | e2 | 20000 | ece |
+------+------+--------+--------+
我不明白为什么我得到这个输出。我猜可能是给了布兰奇公司的员工最高工资。对这个问题作些解释会有帮助的。
1条答案
按热度按时间fjaof16o1#
这是一个例子
Correlated Subquery
其中内部查询和外部查询同时执行对于外部查询的每一行,比较内部查询中的结果和用于从外部查询中获取最终结果的内部查询的结果。