我想了解以下查询:
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;
答案 0 :(得分:1)
我认为这个查询应该返回3个最差的工资!
答案 1 :(得分:1)
从内部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;
总而言之,我们取道:
如果薪水是最差的薪水之一,那么薪水就是独一无二的。