[英]Limiting results in SQL query
我正在通过低谷的方法来限制SQL中的结果,并且遇到了这样一种方法:
SELECT name
FROM employees e
WHERE 2>=( SELECT COUNT(*) FROM employees e1 WHERE e1.birthdate>e.birthdate);
该查询返回了三个最年轻的员工,但我不太了解该查询的工作方式。 为什么2> =而不是2 <=? 任何人都可以阐明该查询的作用吗? 谢谢!
SELECT COUNT(*) FROM employees e1 WHERE e1.birthdate>e.birthdate
为您提供比当前雇员年轻的雇员数。 因此,只要0、1或2个人比返回该行的当前员工年轻。
最终,您将获得三个最年轻的员工。 实际上,它只会为您提供3个最年轻生日的雇员(可能超过3个雇员)
通过示例数据了解它:
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
。 确定它将返回Empid 1,2,3而不是4。
注意:仅供参考,还有其他方法可以有效地实现这一目标。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.