如何選擇使用內連接或外連接

 

 

當我們在多表連接查詢時,相信有大部分的程序員,還是不清楚何時使用內鏈接,何時使用外連接!現在我來總結一下我個人的經驗!

 

      比如有tableA ,tableB,tableA和tableB是一對多

 

      需求一:根據tableB的某寫字段,查詢出tableA

      分析:如果此時使用內鏈接 則相應的語句是:select a.* from tableA a ,tableB b  where a.id =tableB.aid and b.code='4401'

                 此時返回的結果是tableA在tableB有子數據的的部分數據,而如果表tableA中的某條數據,在表tableB中不存在子數據,此時是查詢不出來!

              

                  如果使用的是外連接,則相應的語句如下:select a.* from tableA a  left join tableB b on a.id=b.aid and b.code='4401';

                 此時返回的結果是tableA中的全部數據,而且有重複數出現,則應該用distinct過濾,語句如下:

                      :select distinct a.* from tableA a  left join tableB b on a.id=b.aid and b.code='4401';

              

               總結:1:如果查詢要返回的是一的一方,而且需要返回全部的數據,則應該用外連接,此時內鏈接不合適。

                          2:如果查詢要返回的是一的一方,而且只想返回在多的一方存在記錄的數據,則使用屋內連接。

 

 

          需求二:根據tableB的某寫字段,查詢出tableB

                     

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章