[英]SQL Creating an Alias Column For a Nested Select?
假設我有一個Person
表和一個Courses
表。 在Person
表中,我有PersonName
列。 在Courses
表中,假設我有CourseTitle
, PersonName
和CourseDifficulty
。 CourseDifficulty
是1-4(4是最難的)。 如何從Person
返回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。 在此先感謝您的幫助!
你可以使用以下
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語句中添加此字段。
試試這個:
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.