当一个人有很多引用时,有效地查询表

时间:2011-01-13 16:12:49

标签: mysql

我有两个表:班级和讲师。

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');

如何查询具有教师姓名的班级列表?我有两种方式来考虑查询,并希望有一种更有效的方法。

  1. 每个班级查询一次

    SELECT * FROM class; SELECT * FROM instructor WHERE class_id =?;

  2. 将它们与多行中的同一个类一起查询

    SELECT * FROM class c,instructor i,WHERE cid = iclass_id GROUP BY {{1} } c;。

  3. 我希望以逗号分隔逗号的类列表的输出方式。

2 个答案:

答案 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;