考虑表员工(EMPID、姓名、部门、工资)和下面两个查询Q1、Q2。假设第五部门有不止一名员工,我们希望找到比第五部门的任何人都高薪的员工,对于任意的员工表,以下哪项陈述是正确的?
null
Q1 : Select e.empId From employee e Where not exists (Select * From employee s where s.department = “5” and s.salary >=e.salary) Q2 : Select e.empId From employee e Where e.salary > Any (Select distinct salary From employee s Where s.department = “5”)
(A) Q1是正确的查询 (B) 问题2是正确的查询 (C) Q1和Q2都给出了相同的答案。 (D) Q1和Q2都不是正确的查询 答复: (A) 说明: 他们要求的第一个注意事项 任何人 不适合 任何 . 在这里 每个人 指整个团体。 任何人 指集团的全部或任何部分。
让员工(empId、姓名、部门、薪水)拥有以下实例。
empId名称部门工资 ———————————-
e1 ------- A-------- 1---------10000 e2 -------B ------- 5 ---------5000 e3 -------C ------- 5----------7000 e4 -------D ------- 2----------2000 e5 -------E ------- 3----------6000
现在,实际结果应该包含empId:e1、e3和e5(因为他们的工资比部门“5”中的任何员工都高)
——————————————————– 现在Q1:
注意:EXISTS(空集)给出FALSE,NOT EXISTS(空集)给出TRUE。
Select e.empId From employee e Where not exists (Select * From employee s where s.department = “5” and s.salary >=e.salary)
Q1将只产生empId e1。 ——————————————————— 鉴于问题2:
Select e.empId From employee e Where e.salary > Any (Select distinct salary From employee s Where s.department = “5”)
Q2将产生empId e1、e3和e5。 ——————————————————– 因此,Q1是正确的查询。
注意,如果我们使用 全部的 代替 任何 在第二个查询中,这将是正确的。
选项(A)是正确的。 这个问题的小测验
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END