假设我有一个Person
表和一个Courses
表。在 Person
表中,我有列 PersonName
。在 Courses
表中,假设我有 CourseTitle
、PersonName
和 CourseDifficulty
。 CourseDifficulty
是 1-4(4 是最难的)。我如何从 Person
返回人员列表,并且每个人都有一列显示他们在 CourseTitle
上的最难类(class)。
据我所知,我会通过执行以下操作获得 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 语句中添加此字段。
关于SQL 为嵌套选择创建别名列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10355761/