MySQL GROUP BY主题

时间:2012-03-31 09:27:48

标签: mysql group-by

我有一张名为'老师'的桌子。 教师表有以下几个字段

  • ID
  • schoolnumber
  • 性别
  • 姓名
  • 名字
  • subjectgroup
  • 状态
  • 时间

我想根据主题(主题组)显示所有教师。

这是我当前的查询:

SELECT * FROM teachers WHERE status = '1' GROUP BY subjectgroup

它正确地对教师进行分组,但每个科目只显示1名教师。

输出:

  • 科学:

    • 先生。 ScienceMan
  • 英文:

    • MRS。英
  • 数学:

    • 先生。数学

但我想要的是按主题列出的教师名单

小组中应该有多位老师。

感谢您的帮助!

4 个答案:

答案 0 :(得分:1)

Group by会将这些行分组为一行。听起来你想要order by主题

答案 1 :(得分:1)

对于你正在做的事情,你想要ORDER BY,它按给定的字段排序。

GROUP BY是您尝试获取摘要数据的时候,就像您在SELECT语句中获得SUM()或AVERAGE()或COUNT()时一样。它告诉SQL如何分解为这些函数组合的项目。

答案 2 :(得分:0)

我会建议这样的事情:

SELECT DISTINCT subjectgroup, GROUP_CONCAT(firstname SEPARATOR ' ')
FROM teachers
WHERE status = 1
GROUP BY subjectgroup;

Group concat是MySQL中需要的功能

答案 3 :(得分:0)

这将显示以逗号分隔的教师姓名列表:

    SELECT
        GROUP_CONCAT(
            DISTINCT (
                CONCAT_WS(' ', `firstname`, `lastname`)
            ) SEPARATOR ', '
        ) AS `teacher_list`,
        `subjectgroup`
    FROM
        `teachers`
    WHERE
        `status` = 'i'
    GROUP BY
        `subjectgroup`