Mysql 如何将一个SQL表中的两列连接到另一个SQL表中的一列?

Mysql 如何将一个SQL表中的两列连接到另一个SQL表中的一列?,mysql,sql,join,Mysql,Sql,Join,我正在使用MYSQL。我的数据库中有两个表 表1:“courseTable”有两个列: courseId courseName courseId prereqCourseId 表2:“prereqTable”有两个列: courseId courseName courseId prereqCourseId 表2中的两列都对应于表1中的courseId。我正在尝试运行一个查询,该查询将生成一个包含courseId的courseName和prereqCourseId的courseName的表

我正在使用MYSQL。我的数据库中有两个表

表1:“courseTable”有两个列:

courseId
courseName
courseId
prereqCourseId
表2:“prereqTable”有两个列:

courseId
courseName
courseId
prereqCourseId
表2中的两列都对应于表1中的courseId。我正在尝试运行一个查询,该查询将生成一个包含courseId的courseName和prereqCourseId的courseName的表

我被困在这里:

SELECT `course`.courseName, `prereq`.prereqCourseId FROM `course`
LEFT OUTER JOIN `prereq`
ON `course`.courseId = `prereq`.courseId

可以两次连接同一个表,只需为每个实例中的表指定不同的别名,以便从表的相应实例中选择列。像这样:

SELECT
    `course_main`.courseName,
    `course_prereq`.courseName AS `prereqCourseName`

FROM `course` AS `course_main`

LEFT OUTER JOIN `prereq`
ON `course_main`.courseId = `prereq`.courseId

LEFT OUTER JOIN `course` AS `course_prereq`
ON `course_prereq`.courseId = `prereq`.prereqCourseId

您需要连接课程表两次,并参考prereqTable

SELECT a.courseName,c.courseName
FROM courseTable AS a
LEFT OUTER JOIN prereqTable AS b ON a.courseId=b.courseId
LEFT OUTER JOIN courseTable AS c ON b.prereqCourseId=c.courseId

如果要两次联接同一个表,则必须使用别名

SELECT p.name AS parent, c.name AS child
  FROM relations AS r
  LEFT JOIN nodes AS p
    ON(p.id=r.parent)
  LEFT JOIN nodes AS c
    ON(c.id=r.child )
AS
是可选的,但推荐使用,因为它提高了可读性,并表明您不仅仅忘记了逗号。比较:

SELECT  a b, c d, e, f, g, h i, ...

SELECT a AS b, c AS d, e, f, g, h AS i, ...

只需连接到同一个表两次..可能的重复项您需要在第二次连接中使用“prereqCourseId”作为参考,以根据prereqCourseId获取课程名称..感谢您提供更深入的解释