簡體   English   中英

SQL為嵌套選擇創建別名列?

[英]SQL Creating an Alias Column For a Nested Select?

假設我有一個Person表和一個Courses表。 Person表中,我有PersonName列。 Courses表中,假設我有CourseTitlePersonNameCourseDifficulty 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM