MySQL 中使用 LIMIT 获取每组第一个数据:详细步骤与示例
MySQL 中如何使用 LIMIT 获取每组第一个数据
问题: 在使用 GROUP BY 语句对数据进行分组后,如何只查询每组的第一个数据?
解决方案: 你可以在子查询中使用 LIMIT 1 来限制每个组的结果返回第一条数据。
示例代码: 假设我们有一个 dept_emp 表和一个 salaries 表,我们要查询每个部门最低薪资的员工信息。
原始查询:
SELECT d.dept_no, d.emp_no, s.salary
FROM dept_emp d
JOIN salaries s ON d.emp_no = s.emp_no
WHERE d.dept_no IN (
SELECT d.dept_no
FROM dept_emp d
JOIN salaries s ON d.emp_no = s.emp_no
GROUP BY d.dept_no, d.emp_no
ORDER BY s.salary ASC
)
修改后的查询:
SELECT d.dept_no, d.emp_no, s.salary
FROM dept_emp d
JOIN salaries s ON d.emp_no = s.emp_no
WHERE d.dept_no IN (
SELECT d.dept_no
FROM dept_emp d
JOIN salaries s ON d.emp_no = s.emp_no
GROUP BY d.dept_no, d.emp_no
ORDER BY s.salary ASC
LIMIT 1
)
解释:
- 我们在子查询中使用
LIMIT 1,限制每个部门只返回最低薪资的一条数据。 - 外层查询从
dept_emp和salaries表中获取符合条件的员工信息。
注意:
- 在使用
LIMIT 1时,需要确保ORDER BY子句已经按所需顺序排序,以确保获取到每组的第一个数据。 - 如果需要获取每组的多个数据,可以修改
LIMIT子句中的数字。
通过这种方式,你可以轻松地从分组数据中获取每组的第一个数据,从而满足你的需求。
原文地址: https://www.cveoy.top/t/topic/pbKT 著作权归作者所有。请勿转载和采集!