MySQL- 谁能解释一下这个查询
MySQL- Can any one please explain this query
我想了解以下查询:
SELECT DISTINCT salary
FROM employees a
WHERE 3 >= (
SELECT COUNT(DISTINCT salary)
FROM employees b
WHERE b.salary <= a.salary
)
ORDER BY a.salary DESC;
我认为这个查询应该return 3 个最差的薪水!
从内部SELECT(相关子查询)开始。这样的查询将针对外部查询中的每一行执行。那么它有什么作用呢?
Return小于或等于当前员工工资的唯一工资数。
SELECT COUNT(DISTINCT salary)
FROM employees b
WHERE b.salary <= a.salary
那么,给定外部 select 当前行的数字,它有什么作用? Return 子查询返回的数字小于或等于 3 的唯一工资(按顺序)。
SELECT DISTINCT salary
FROM employees a
WHERE 3 >= (some number)
ORDER BY a.salary DESC;
将它们放在一起,我们获取:
独特的薪水,其中这样的薪水是最差的 3 个之一。
我想了解以下查询:
SELECT DISTINCT salary
FROM employees a
WHERE 3 >= (
SELECT COUNT(DISTINCT salary)
FROM employees b
WHERE b.salary <= a.salary
)
ORDER BY a.salary DESC;
我认为这个查询应该return 3 个最差的薪水!
从内部SELECT(相关子查询)开始。这样的查询将针对外部查询中的每一行执行。那么它有什么作用呢?
Return小于或等于当前员工工资的唯一工资数。
SELECT COUNT(DISTINCT salary)
FROM employees b
WHERE b.salary <= a.salary
那么,给定外部 select 当前行的数字,它有什么作用? Return 子查询返回的数字小于或等于 3 的唯一工资(按顺序)。
SELECT DISTINCT salary
FROM employees a
WHERE 3 >= (some number)
ORDER BY a.salary DESC;
将它们放在一起,我们获取:
独特的薪水,其中这样的薪水是最差的 3 个之一。