有一个名为Employee的表,它上面有employee_id,manager_id,salary列。我的问题是
select employee_id,salary,last_name from employees M
WHERE EXISTS
(SELECT employee_id FROM employees W
WHERE (W.manager_id = M.employee_id) AND W.SALARY>10000)
order by employee_id asc
这个查询意味着什么?
a)所有薪水大于10000的经理
b)所有至少有一名员工超过10000的经理答案 0 :(得分:2)
如果子查询完全返回任何行,EXISTS
子查询为TRUE
,NOT EXISTS
子查询为FALSE
。例如:
SELECT column1 FROM t1 WHERE EXISTS (SELECT * FROM t2);
传统上,EXISTS
子查询以SELECT *
开头,但它可以以SELECT 5
或SELECT column1
或任何内容开头。 MySQL ignores the SELECT
list in such a subquery,所以没有区别。
在您的情况下,选项B
是正确的。
答案 1 :(得分:0)
这似乎意味着所有经理至少有一名员工的收入超过10000。 如果没看到实际的表等,很难说。
这样想:
员工W的manager_id =员工M的employee_id,W的收入超过10000.
因此,M是经理,W是员工,W的收入超过10000
答案 2 :(得分:0)
b)它说:给我所有管理人员),其中(至少有一名)工人(在他们之下)工资大于10k。
答案 3 :(得分:0)
我想知道stackoverflow中提出的问题类型。
所以我在这里打破你的查询
SELECT employee_id FROM employees W
WHERE (W.manager_id = M.employee_id) AND W.SALARY>10000
上述查询正在搜索员工表中薪水超过10000的经理
之后,您存在查询select employee_id,salary,last_name from employees M
,以获取作为您的员工的经理,并在之前的选择查询中满足薪资标准。
简而言之,您将获得收入超过10000的经理详细信息