任何人都可以解释为什么这个查询:
SELECT employee_id, last_name, salary
FROM employees
WHERE department_id IN (SELECT department_id
FROM employees
WHERE last_name LIKE '%u%'
)
AND salary > (SELECT AVG(salary)
FROM employees);
返回的行数比嵌套行少:
SELECT employee_id, last_name, salary
FROM employees
WHERE department_id IN (SELECT department_id
FROM employees
WHERE last_name LIKE '%u%'
AND salary > (SELECT AVG(salary)
FROM employees);
)
最佳答案
第一个返回满足以下条件的所有员工:
- 该员工所在的部门有一名“u”员工。
- 该员工的工资高于平均水平。
第二个返回满足这些条件的所有员工:
- 该员工所在的部门有一名“u”员工,该员工的薪资高于平均水平。
两者的条件截然不同。我不希望他们返回相同的结果集。
此外,只要查询中有多个表,您就应该使用表名缩写的表别名并且您应该限定所有列名称。
关于sql - SQL 查询的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44699261/