【问题标题】:How to group similar records by single value如何按单个值对相似记录进行分组
【发布时间】:2013-05-18 03:37:32
【问题描述】:

我有一个问题,我编写了一个脚本来查找不止一所学校的学生,并且我得到了该学校下每个班级的重复记录。

问题是学生共享相同的唯一主键,因此我无法按此分组。而且我不能按学校或班级分组,因为那样会淘汰其他学生。

基本上我想根据学校对每个学生的所有记录进行分组,这样每个学生每个学校只有一条记录。

我真的不在乎分组显示什么班级,因为我真的想找到在不止一所学校中列出的学生。

例如

id    first    Last    Class School
22     mike     bundy    1     tan
22     mike     bundy    2     tan
22     mike     bundy    3     light

我想把它归结为这个

id    first    Last    Class School
22     mike     bundy    1     tan
22     mike     bundy    3     light

【问题讨论】:

  • 这是否意味着您根本不关心 Class 字段,或者您想要最低的 class 值?能不能简洁一点?
  • 你考虑过使用 distinct 吗?
  • 我根本不关心班级字段 - 但它需要在连接中找到学生与哪个学校相关联。
  • 我似乎无法区分工作和个别学生行。这个数据库的记录太多,无法进行简单的区分,因为这样会忽略其他学生。
  • 您的选择列表中的列与您显示数据结果的数据不匹配。选择中的哪一列与每个数据列相关?

标签: mysql group-by grouping


【解决方案1】:

您可以简单地使用 group by 子句来获取每所学校的单个记录。喜欢

SELECT
        user.user_id,
        user.last_name,
        user.first_name,
        student.sis_id,
        organization.`NAME`AS school,
        count(*) as Count
    FROM
        user
    JOIN student ON user.user_id = student.user_id
    JOIN x_user_group ON _user.user_id = x_user_group.user_id
    JOIN group ON _x_user_group.group_id = group.group_id
    JOIN organization ON group.owner_id = organization.organization_id
Group by
        user.user_id,
        user.last_name,
        user.first_name,
        student.sis_id,
        school
Order by
        user.last_name,
        user.first_name

使用 group by 时需要聚合函数计数。只需在结果集中忽略它。现在每所学校都有一名学生。

【讨论】:

  • 行得通!谢谢.. 所以我猜小组必须降到学校级别
猜你喜欢
  • 2022-08-10
  • 1970-01-01
  • 1970-01-01
  • 2020-05-26
  • 1970-01-01
  • 1970-01-01
  • 2016-03-10
  • 2022-01-13
  • 1970-01-01
相关资源
最近更新 更多