2

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

下表是此查询的结果:

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

桌子

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

表 2

有没有办法修改我当前的查询以便实现这一点?我不确定这在 MySQL 中是否可行,但正如我在过去所学到的,你永远不应该低估查询的力量!(这是在花费时间使用凌乱的嵌套循环尝试操作数组后发现的,而不是我设法在查询中完成所有操作)

编辑:SQL小提琴

谢谢,我将不胜感激!

4

2 回答 2

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 Fiddle 中工作。

于 2013-04-19T19:33:58.767 回答
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
于 2013-04-19T19:55:20.150 回答