PHP MySQL使用相同的值组合来自不同行的单元格

PHP MySQL使用相同的值组合来自不同行的单元格,php,mysql,sql,select,Php,Mysql,Sql,Select,我有一个数据库,其中包含id号、姓名、课时和教师姓名。每一行包括一个学生的id、姓名、期间和教师,这意味着每个学生有多行。那不是我的问题。我的问题是有些班级列出了两位老师……这意味着在一个课时里有两行,每个老师一行。不幸的是,我无法控制数据的格式,因为它是从一个没有很多格式选项的系统中导出的 这里有一个例子,请注意第23行和第24行是如何用于相同的课时和学生的,但唯一不同的是老师的名字 pk id last first period teacher 14 12345

我有一个数据库,其中包含id号、姓名、课时和教师姓名。每一行包括一个学生的id、姓名、期间和教师,这意味着每个学生有多行。那不是我的问题。我的问题是有些班级列出了两位老师……这意味着在一个课时里有两行,每个老师一行。不幸的是,我无法控制数据的格式,因为它是从一个没有很多格式选项的系统中导出的

这里有一个例子,请注意第23行和第24行是如何用于相同的课时和学生的,但唯一不同的是老师的名字

pk  id      last    first   period  teacher
14  12345   Smith   John    3       HARRIS
15  12345   Smith   John    8       LEAL
17  12345   Smith   John    1       HOUSTON
23  56789   Doe     Jane    8       MERCER
24  56789   Doe     Jane    8       RUIZ
25  56789   Doe     Jane    3       BECK
26  56789   Doe     Jane    1       STEED
我想把这两行中相同的句号和学生姓名合并成一行。所有的信息都会保持不变,除了两个不同的老师的名字会被组合成“Mercer&Ruiz”之类的东西。理想情况下,最终的结果会是

24  56789   Doe Jane    8   MERCER & RUIZ
这是否可以使用PHP和/或MySQL实现?我不想找任何人来写完整的代码或任何东西。我只是想不出一个办法来完成它。我很乐意为此事提供任何方向/指示

一如既往,感谢您的时间和帮助

SELECT  MAX(pk), 
        ID,
        `last`, 
        `first`,
        GROUP_CONCAT(teacher SEPARATOR ' & ') teachers
FROM    tableName
// WHERE clause here...
GROUP BY `last`, `first`, `Period`
// ORDER BY clause here....
苏尔奇


应该做你需要的。

工作得很好!非常感谢你!
SELECT pk,id,last,first,period GROUP_CONCAT(teacher) 
FROM table 
GROUP BY id, first,last,period