我有两个表:班级和讲师。
class
id: int
title: varchar(45)
instructor
id: int
class_id: int
name: varchar(45)
假设有两个教师与一个班级相关联:
INSERT INTO `class` VALUES(1, 'Class Number 1');
INSERT INTO `instructor` VALUES (1, 1, 'John Smith');
INSERT INTO `instructor` VALUES (2, 1, 'Jane Smith');
如何查询具有教师姓名的班级列表?我有两种方式来考虑查询,并希望有一种更有效的方法。
每个班级查询一次
SELECT * FROM class
;
SELECT * FROM instructor
WHERE class_id =?;
将它们与多行中的同一个类一起查询
SELECT * FROM class
c,instructor
i,WHERE c
。id
= i
。class_id
GROUP BY {{1} } c
;。
我希望以逗号分隔逗号的类列表的输出方式。
答案 0 :(得分:1)
在MySQL中,您可以使用GROUP_CONCAT聚合函数。请注意these notes。
在大多数情况下,在你的两种方法中,后者更快,因为有很多查询需要花费时间。
答案 1 :(得分:0)
SELECT c.title, GROUP_CONCAT(i.name)
FROM class c, instructor i
WHERE c.id = i.class_id GROUP BY c.id;