说我有一个Person
表和一个Courses
表。在Person
表中,我有一列PersonName
。在Courses
表中,假设我有CourseTitle
,PersonName
和CourseDifficulty
。 CourseDifficulty
是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语句中。