如何分析下面的查询部分

时间:2014-09-27 16:40:51

标签: sql

如何分析以下部分的查询

SELECT *
FROM Employee Emp1
WHERE (N-1) = (
           SELECT COUNT(DISTINCT(Emp2.Salary))
           FROM Employee Emp2
           WHERE Emp2.Salary > Emp1.Salary
           )

请通过示例解释。

1 个答案:

答案 0 :(得分:0)

这将为员工记录提供第n个最高薪水。 这是一个相关的子查询。内部查询在其WHERE子句中使用外部查询(在本例中为Emp1表)中的值。

假设有以下sal值:

100
300
500
200

并且您希望在外部查询中找到第二高sal然后300(薪水)内部查询将返回1作为Emp2.sal> Emp1.sal的计数,即500(N-1,2-1 = 1)