技术开发 频道

MySQL教程:清除结果集中的重复数据

  现在,我们可以知道哪些名称是重复的,以及它们的重复次数:

  五、显示重复数据中每组最小或者最大值

  就像在上面的例子中看到的那样,group by子句会致使对字段列表中的每个唯一值应用聚合函数。应该注意,没有放进group by字段清单中的栏与被聚合的值不必放在同一行。这里给出一个例子,以下查询显示每个部门中的最高工资:

SELECT dept_id,
       name,
       gender,      
       max(salary)
as max_salary
FROM   employees
GROUP BY dept_id;

  我们还想要显示拿最高工资的那些人的有关信息。然而,返回的结果确是:

  问题在于,工资是唯一被聚合的栏,因为Max()聚合函数只被用于它。因此,显示的是各个group by字段中遇到的第一个name和gender值。 通过查看这个表您会发现,虽然Ralph Teller是1号部门的唯一员工,但是只有Jon Simpson拿到了$4500。我们知道,应该显示Peter Jonson,但是查询引擎选择了遇到的dept_id为2的第一个名称和性别。

2
相关文章