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
)

解释:

  1. 我们在子查询中使用 LIMIT 1,限制每个部门只返回最低薪资的一条数据。
  2. 外层查询从 dept_empsalaries 表中获取符合条件的员工信息。

注意:

  • 在使用 LIMIT 1 时,需要确保 ORDER BY 子句已经按所需顺序排序,以确保获取到每组的第一个数据。
  • 如果需要获取每组的多个数据,可以修改 LIMIT 子句中的数字。

通过这种方式,你可以轻松地从分组数据中获取每组的第一个数据,从而满足你的需求。

MySQL 中使用 LIMIT 获取每组第一个数据:详细步骤与示例

原文地址: https://www.cveoy.top/t/topic/pbKT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录