如果(作为一个组)满足条件,则获取表中的每一行

时间:2015-05-01 01:58:48

标签: mysql sql

我有两个表:Students (id, fname, lname)Registrar (id, student_id, class_id)。我教了一个班级ID为99的班级。我想找到班上的所有学生,并列出那些学生以及他们正在学习的所有其他班级。我可以做到以下几点:

SELECT s.fname, s.lname, r.class_id FROM
    Students AS s JOIN Registrar AS r ON s.id = r.student_id WHERE
      r.student_id IN
         (SELECT student_id FROM Registrar WHERE class_id = 99);

这很有效,但速度很慢。我没有太多的经验(正如我的标题所示,我不知道这是什么),但我猜这是一个相当常见的问题需要解决。任何正确方向的指针都是最受欢迎的。

1 个答案:

答案 0 :(得分:1)

您还可以加入条款中的多个项目:

SELECT s.fname, s.lname, r.class_id
FROM Registrar r
    INNER JOIN 
        (SELECT student_id 
        FROM Registrar 
        WHERE class_id = 99) as t
    ON r.student_id = t.student_id
    INNER JOIN Students s
    ON r.student_id = s.id

你真的想尝试尽可能多地完成你的连接。
〜干杯