这个查询意味着什么?

时间:2013-05-14 12:17:52

标签: sql

有一个名为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的经理

4 个答案:

答案 0 :(得分:2)

如果子查询完全返回任何行,EXISTS子查询为TRUENOT EXISTS子查询为FALSE。例如:

SELECT column1 FROM t1 WHERE EXISTS (SELECT * FROM t2);

传统上,EXISTS子查询以SELECT *开头,但它可以以SELECT 5SELECT 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的经理详细信息