将2行合并为一个结果MySQL

时间:2013-04-19 19:32:37

标签: php mysql

我已经检查了一些其他问题,我似乎找不到任何可以回答我的具体问题。

下表是此查询的结果:

SELECT teacher.teacherID, unitName FROM teacher INNER JOIN unit ON teacher.teacherID=unit.teacherID ORDER BY teacherID ASC

Table

我实际需要显示的结果是:

Table 2

有没有办法修改我当前的查询,以便实现这一目标?我根本不确定这在MySQL中是否可行,但正如我过去所了解的那样,你永远不应该低估查询的强大功能! (这是在花时间使用凌乱的嵌套循环试图操纵数组后发现的,而是我设法在查询中完成所有操作)

编辑:SQL Fiddle

谢谢,我将不胜感激任何帮助!

2 个答案:

答案 0 :(得分:4)

是的,您需要使用GROUP BY和GROUP_CONCAT:

SELECT teacher.teacherID, GROUP_CONCAT(unitName)
FROM teacher
INNER JOIN unit ON teacher.teacherID=unit.teacherID
GROUP BY teacher.teacherID
ORDER BY teacherID ASC

此查询直接在您的SQL小提琴中工作。

答案 1 :(得分:2)

稍微调整一下alexn的答案,将逗号后面的格式与空格匹配:

SELECT teacher.teacherID, GROUP_CONCAT(unitName SEPARATOR ', ')
FROM teacher
INNER JOIN unit ON teacher.teacherID=unit.teacherID
GROUP BY teacher.teacherID
ORDER BY teacherID ASC