我正在努力尋找一個子查詢(Oracle 11)。下面的例子是針對這個問題的「發明」。如何限制使用外部查詢別名的相關子查詢的結果?
SELECT TM.TMID AS TEAM_ID
,(SELECT FIRST_NAME || ' ' || LAST_NAME
FROM PLAYER PL
WHERE PL.TMID=**TM.TMID**
ORDER BY AGE) AS OLDEST_PLAYER_NAME
FROM TEAM **TM**
再次,這是一個發明的例子。讓我們不要討論任何有關命名約定,規範化或年齡計算的討論。
問題的關鍵在於相關的查詢返回多個結果,我需要選擇第一個結果。如果我將這個相關的查詢包裝在另一個內部來執行select .... where rownum<=1
,我將打破別名引用。
請與我的問題一起工作! 試圖提供幫助時,請說明我可以如何限制以上子查詢的結果或說明無法完成。不要將此查詢重寫爲某些連接,因爲我無法驗證您的解決方案是否正常工作。如果上面的子查詢不能限制在單行中,我會將完整的查詢發展爲自己的連接。這個問題嚴格限制結果而不打破別名參考。
如果你想最終編寫好的SQL,你將不得不開始使用內聯視圖而不是子查詢。通過子查詢,一切都緊密耦合,難以調試。內聯視圖可以促進鬆耦合,從而更容易將任務分解爲獨立的,可管理的塊。這個小例子無關緊要。但是當你開始構建巨大的查詢時,這會產生巨大的影響。 –