我想了解以下查询:
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;
最佳答案
从内部 SELECT(相关子查询)开始。将对外部查询中的每一行执行这样的查询。那么它有什么作用呢?
返回小于或等于当前员工工资的唯一工资的数量。
SELECT COUNT(DISTINCT salary)
FROM employees b
WHERE b.salary <= a.salary
那么,给定外部选择的当前行的数字,它会做什么?返回子查询返回的数字小于或等于3的唯一工资(按顺序)。
SELECT DISTINCT salary
FROM employees a
WHERE 3 >= (some number)
ORDER BY a.salary DESC;
把它们放在一起,我们得到:
独特的薪水,这样的薪水是最差的 3 个薪水之一。
关于MySQL-任何人都可以解释一下这个查询吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37778203/