大门|大门-CS-2007 |问题61

考虑表员工(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
喜欢就支持一下吧
点赞15 分享