資料庫查詢左右連線

2021-07-02 12:02:58 字數 1018 閱讀 5617

假設有如下表:

乙個為投票主表,乙個為投票者資訊表~記錄投票人ip及對應投票型別,左右連線實際說是我們聯合查詢的結果以哪個表為準~

1:如右接連 right join 或 right outer join:

我們以右邊voter表為準,則左表(votemaster)中的記錄只有當其id在右邊(voter)中存在時才會顯示出來,如上圖,左邊中id為3.4.5.6因為這些id右表中沒有相應記錄,所以沒有顯示!

2:因此我們自然能理解左連線 left join 或者 left outer join 

可見,現在右邊中id在中存在時才會顯示,當右邊中沒有相應資料時則用null代替!

3:全連線 full join 或者 full outer join,為二個表中的資料都出來,這裡演示效果與上一樣! 

4:內連線 inner join 或者 join;它為返回欄位id同時存在於表votemaster 和 voter中的記錄

5:交叉連線(完全連線)cross join 不帶 where 條件的

沒有 where 子句的交叉聯接將產生聯接所涉及的表的笛卡爾積。第乙個表的行數乘以第二個表的行數等於笛卡爾積結果集的大小。(table1和table2交叉連線產生6*3=18條記錄)

等價select vm.id,vm.votetitle,vt.ip from votemaster as vm,voter as vt

6:自連線。在這裡我用我前段時間乙個電力專案中的例子(改造過)

如下表:

這是乙個部門表,裡面存放了部門及其上級部門,但都放在同一張表中,我們假設現在需要用sql查詢出各部門及其上級部門!就如何做,

當然,不用自連線也一樣,可以如下:

我們達到預期目的!在這個查詢中使用了乙個子查詢完成對上級部門名的查詢,如果使用自連線,那麼結構上感覺會清晰很多。

是不是也同樣完成了功能呢,這裡除了使用自連線外,還使用了左連線,因為省電力沒有上級部門,他是老大,如果使用內連線,就會把這條記錄過濾掉,因為沒有和他匹配的上級部門。

自連線用的比較多的就是對權形結構的查詢!類似上表!

資料庫表左右外內連線查詢

資料表的連線有 1 內連線 自然連線 只有兩個表相匹配的行才能在結果集中出現 2 外連線 包括 1 左外連線 左邊的表不加限制 2 右外連線 右邊的表 不加限制 3 全外連線 左右兩表都不加限制 3 自連線 連線發生在一張基表內 size size x small s size size x sma...

資料庫中左右連線

學生表 學號 姓名 0001 小李 0002 小王 0003 小朱 0004 小黃 選課表 學號 課程 0001 高數 0002 線數 0004 英語 0005 電腦 左 外 聯接 select 學生表.選課表.課程 from 學生表,選課表 where 學生表.學號 選課表.學號 查詢的結果是 學...

資料庫外連線(左 右 全) 內連線

1sql指令碼 0表資料 1左外連線 應用 結果 2右外連線 應用 結果 3全外連線 測試sql 4內連線 測試sql 結果 1 sql指令碼 set foreign key checks 0 table structure for clazz drop table if exists clazz ...