我正在采用限制SQL结果的方法,我遇到过这样的方式:
SELECT name
FROM employees e
WHERE 2>=( SELECT COUNT(*) FROM employees e1 WHERE e1.birthdate>e.birthdate);
此查询返回三个最年轻的员工,但我不太了解此查询的工作原理。为什么它是2> =而不是2< =?任何人都可以了解这个查询的作用吗?谢谢!
答案 0 :(得分:1)
SELECT COUNT(*) FROM employees e1 WHERE e1.birthdate>e.birthdate
为您提供比当前员工年轻的员工人数。 因此,只要0,1或2人比当前员工更年轻,就会返回。
这最终为您提供了三名最年轻的员工。 事实上,它只给你的员工提供3个最年轻的出生日期(可能超过3名员工)
答案 1 :(得分:1)
用示例数据理解它:
employeeId birthdate
1 12/29/2014
2 11/20/2014
3 01/01/2015
4 11/19/1991
现在,评估每个子查询:
employeeId birthdate subquery result
1 12/29/2014 how many employees have birth date > 12/29/2014 = 1
2 11/20/2014 how many employees have birth date > 11/20/2014 = 2
3 01/01/2015 how many employees have birth date > 01/01/2015 = 0
4 11/19/1991 how many employees have birth date > 11/19/1991 = 3
现在,应用标准2>= subquery result
。可以肯定的是,它将返回emp 1,2,3而不是4。
注意:仅仅是为了获得有效实现此目的的其他方法的信息。