Left Join B表,只取B表一條記錄


--用OUTER APPLY
select b.* FROM a表 a
OUTER APPLY
(select TOP(1) * from b表 WHERE [Name] = a.[AName] ORDER BY BNo desc) b
總結:
1.   理解 CROSS APPLY 與 OUTER APPLY(個人理解)
1)   CROSS APPLY 的意思是“交叉應用”,在查詢時首先查詢左表,然后右表的每一條記錄跟左表的當前記錄進行匹配。匹配成功則將左表與右表的記錄合並為一條記錄輸出;匹配失敗則拋棄左表與右表的記錄。(與 INNER JOIN 類似)
2)   OUTER APPLY 的意思是“外部應用”,與 CROSS APPLY 的原理一致,只是在匹配失敗時,左表與右表也將合並為一條記錄輸出,不過右表的輸出字段為 null。(與 LEFT OUTER JOIN 類似)
 
2.   CROSS APPLY 與 INNER JOIN 的區別
1)   CROSS APPLY 可以根據當前左表的當前記錄去查詢右表,但是 INNER JOIN 不可以,INNER JOIN 是根據左表的當前記錄匹配右表整個結果集。
2)   兩者都是匹配成功才輸出。
 
3.   OUTER APPLY 與 LEFT OUTER JOIN 的區別
1)   它們和(CROSS APPLY 與 INNER JOIN)類似。
2)   只是兩者都是匹配失敗也會輸出。
 
4.   使用場景:
1)   一個商品有多張圖片,但是只想取最近的一張圖片跟商品匹配。
 
5.   總結一句話:右表可以是有條件的跟左表的記錄匹配,而條件的值可以來至於左表。

轉自鏈接:https://www.cnblogs.com/abeam/p/7137993.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM