我正在使用嵌套 SQL 查询来查找第三低的工资,但该查询没有显示员工的正确姓名,而是显示给出了工资最高的员工姓名和第三低的工资。这是我的询问。
SELECT first_name, MIN(salary)
FROM employee
WHERE salary > (SELECT min(salary)
FROM employee
WHERE salary > (SELECT min(salary)
FROM employee)
);
您可以使用
OFFSET/LIMIT
获得第三低的值:
SELECT first_name, salary
FROM employee
WHERE salary
ORDER BY salary
LIMIT 1 OFFSET 2
您的原始查询不起作用的原因,首先,您的选择是:
SELECT first_name, MIN(salary)
这意味着这里有一个隐含的“将所有内容分组”,MySQL 将
first_name
解释为 ANY(first_name)
。
而且,这样做效率极低。
SELECT firstname, salary
FROM employees
ORDER BY salary ASC
OFFSET 2 LIMIT 1;
选择“名字”,MIN(薪水) AS LowestSalary 来自学生;
它对我有用......
选择数据并按薪资升序排列。最低工资将是第一行,因此将结果限制为只有一行,即工资最低的人!
SELECT first_name, salary
FROM employee
ORDER BY salery
LIMIT 1;