假设我有一个Person
表和一个Courses
表。在Person
表中,我有列PersonName
。在Courses
表中,假设我有CourseTitle
,PersonName
和CourseDifficulty
。 CourseDifficulty
是1-4(4是最难的)。如何从Person
返回一个人员列表,并且每个人都有一列显示他们正在CourseTitle
开展的最困难的课程。
据我所知,我将通过以下方式获得Brett最困难的课程的课程标题:
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
对于noobness抱歉。在此先感谢您的帮助!
答案 0 :(得分:5)
您可以使用以下
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语句中添加此字段。
答案 1 :(得分:1)
试试这个:
SELECT c.CourseTitle, c.PersonName, c.CourseDifficulty
FROM Courses c
WHERE c.CourseDifficulty=(SELECT MAX(c2.CourseDifficulty) FROM Courses c2 WHERE c2.PersonName=c.PersonName)