我想了解以下查询:

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 - MySQL-谁能解释一下这个查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37778203/

10-12 15:55