WHERE salary > (WHERE managerId IS NULL)
时间: 2024-09-22 11:01:49 浏览: 23
SQL中Having与Where的区别
5星 · 资源好评率100%
这个SQL查询看起来有些混乱,它试图在一个嵌套的子句中同时使用`WHERE`关键字两次。正确的语法应该是这样的:
如果你想找出薪水大于某个经理(没有经理ID)的员工,你应该先找到那些经理ID为NULL的员工,然后再从他们中筛选出薪水高的。这是一个两步的过程:
1. 先找出所有没有经理(managerId IS NULL)的员工:
```sql
SELECT * FROM employees
WHERE managerId IS NULL;
```
2. 然后在第一步的结果集上,查找那些薪水(salary)大于某个值的员工:
```sql
SELECT * FROM (SELECT * FROM employees WHERE managerId IS NULL)
WHERE salary > some_value;
```
这里的`some_value`需要替换为你实际想要比较的具体数值。
如果你的意图是要表达“薪水大于当前经理的薪水”,那么应该避免嵌套`WHERE`,直接计算每个员工的相对薪水:
```sql
SELECT * FROM employees
WHERE salary > (
SELECT MAX(salary) FROM employees AS subquery
WHERE subquery.managerId = employees.managerId
);
```
这会找出薪水比他们的直接上级更高的员工。
阅读全文