程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> SQL中的left join right join

SQL中的left join right join

編輯:MSSQL

SQL中的left join right join。本站提示廣大學習愛好者:(SQL中的left join right join)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL中的left join right join正文


以下是它們的配合點:
1. 關於閣下表的概念。左表指的是在SQL語句中排在left join右邊的表,右表指的是排在left join左邊的表。
2. 在拼成的年夜表中,左表排在右邊,右表排在左邊。
3. on前提語句最好用=號對兩表響應的主外鍵停止銜接。固然,也能夠用其他操作符,如>, <, 來銜接兩表的任一字段,此時的關系將異常龐雜,銜接後的記載數也隨之而變得不肯定。假如在一些特別的場所中須要用到這類方法,必需經由過程簡略的實例加以確認,不然,銜接成果極可能不是我們所想要的!
4. on前提語句不克不及省略。
5. 可以連鎖應用join,每次應用join都令另外一表與以後的表或銜接的成果相銜接。
鄙人文中,用到了兩個表,"部分"表與"組織"表,個中,"部分"表有一位為"組織編號"的外鍵,指向"組織"表中的主鍵"編號"。
inner join
格局:select * from 部分 inner join 組織 on 部分.組織編號 = 組織.編號
目標:將兩表中相符on前提的一切記載都找出來。
紀律:
1. 拼出的年夜表記載不會增長。
2. 假如右邊與右表的關系是一對多的關系,在選出的任一記載中,假若右表有多個記載與其對應,那末,銜接後的左表,主鍵將不再獨一。
典范運用:將存在多關系的援用表放在左表,將存在一關系的被援用表放在右表,經由過程=號將主外鍵停止銜接,經由過程對右表設定過濾前提,選出響應的且主鍵獨一的左表記載。
備注:inner join 是默許的銜接方法,可縮寫為join。
轉化為where子句:
select * from 部分, 組織 where 部分.組織編號 = 組織.編號
left outter join
格局: select * from 部分 left join 組織 on 部分.組織編號 = 組織.編號
格局: select * from 組織 left join 部分 on 組織.編號 = 部分.組織編號
目標:將左表的一切記載列出,右表中只需相符on前提的,與左表記載相拼合,不相符前提的,填以null值。
紀律:
1. 選出一切相符前提的左表,假如右邊與右表的關系是一對一的關系,則拼成的年夜表記載不會轉變。
假如右邊與右表的關系是多對一的關系,則拼成的年夜表記載也不會轉變。
假如右邊與右表的關系是一對多的關系,則拼成的年夜表記載會增長。關於每具有一對多關系的左表記載,假如左表1:N與右表對應,那末會多出N-1筆記錄。例如,假如左表第一筆記錄1:3對應於右表,多出2筆記錄。假如左表第二筆記錄1:2對應於右表,則再多出1筆記錄。如許,總共多出3筆記錄。其他類推。
2. 假如右邊與右表的關系是一對多的關系,在選出的任一記載中,假若右表有多個記載與其對應,那末,銜接後的左表,主鍵將不再獨一。
3. 假如右邊與右表的關系是一對多的關系,關於左表任一記載,假如右表沒有記載與其絕對應,則全體填以null值。
典范運用:將存在多關系的援用表放在左表,將存在一關系的被援用表放在右表,經由過程對右表設定過濾前提,選出響應的且主鍵獨一的左表記載。
備注:left outter join可用left join取代。在有些數據庫中,如HSqlDb, 只能應用left join而不克不及應用left outter join。
轉化為where子句:
select * from 部分, 組織 where 部分.組織編號 = 組織.編號
right outter join
格局: select * from 部分 right join 組織 on 部分.組織編號 = 組織.編號
格局: select * from 組織 right join 部分 on 部分.組織編號 = 組織.編號
目標:將右表的一切記載列出,左表中只需相符on前提的,與右表記載相拼合,不相符前提的,填以null值。
紀律:(與left outter join相反)
典范運用:可轉化成left outter join。例如
select * from 組織 right join 部分 on 部分.組織編號 = 組織.編號

select * from 部分 left join 組織 on 部分.組織編號 = 組織.編號
的後果一樣
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved