说我有一个Person表和一个Courses表。在Person表中,我有一列PersonName。在Courses表中,假设我有CourseTitlePersonNameCourseDifficultyCourseDifficulty是1-4(最难的是4)。如何从Person返回人员列表,并且每个人都有一列显示CourseTitle上的最难上课的列。

据我所知,我将通过执行以下操作来获取Brett所参加的最困难的类(class)的CourseTitle:

SELECT CourseTitle
FROM Courses
WHERE PersonName = 'Brett'
  AND CourseDifficulty = (SELECT MAX(CourseDifficulty)
                          FROM Courses
                          WHERE PersonName='Brett')

但是,如何为Person表中的每个人运行它呢?我希望结果像

Brett-SQL For Dummies 4
Tim-Quantum Mechanics
Jane-Thermodynamics 2

对不起,我很笨。先谢谢您的帮助!

最佳答案

您可以使用以下内容

SELECT p.name ,p.address, c.courseTitle ,c.courseDifficulty FROM (
        SELECT personName, courseTitle, MAX(courseDifficulty) AS courseDifficulty
        FROM course
        GROUP BY personName
) AS c RIGHT JOIN person AS p ON p.name = c.personName

这里假设personName是唯一的。否则,您可以在此处使用唯一的ID代替人名,并将此字段添加到select语句中。

08-05 06:50