使用连接优化查询

Nat*_*sha 3 mysql sql refactoring join

如何使用连接完成查询.我是数据库新手.这个查询工作正常..但我想让它更加干净

   $query = "SELECT student_id 
FROM students
WHERE student_id
IN (
    SELECT student_id
    FROM class_students
    WHERE class_id
        IN (
            SELECT class_id
            FROM class_course
            WHERE teacher_id =". $_SESSION['teacher_id']."))";
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以做到这一点

Boh*_*ian 5

使用IN可以转换为正确的连接:

SELECT s.student_id 
FROM students s
JOIN class_students cs ON cs.student_id = s.student_id
JOIN class_course c ON c.class_id = cs.class_id
WHERE teacher_id = ?
Run Code Online (Sandbox Code Playgroud)

请注意,我已经删除了(不相关的)应用程序语言细节(perl?),只留下回答问题的SQL.