sql關聯查詢

2021-08-14 12:14:26 字數 2231 閱讀 7781

1.內連線

是最普遍的一種連線方式,選出相連的兩張表都互相滿足連線條件的資料。

寫法:select ainner joinb on a.id=b.aid (其中inner可忽略)

舉例:a表:

查詢語句:select * from a inner join b on a.id=b.id。

將a表的每一條資料拿出來,遍歷b表進行對比,滿足條件資料的返回。

結果:

2.外連線

比較常用的且非常有用的連線方式,有3種外連線方式。

2.1左外連線

寫法:select * from aleft outer joinb on a.id=b.aid (outer可忽略)

意思就是查詢結果顯示a表所有資料,加上b表滿足a.id=b.aid的資料,若b表沒有滿足條件的資料,設為null。

舉例:a表:

查詢語句:select * from a left outer join b on a.id=b.id。

將a表的每一條資料拿出來,遍歷b表進行對比,將b表中滿足條件的資料加到a表資料後面作為查詢結果,b表中不滿足條件的資料把null加到a表資料後面作為查詢結果。

結果:

2.2 右外連線

寫法:select * from arightouter joinb on a.id=b.aid (outer可忽略)

意思就是查詢結果顯示b表所有資料,加上a表滿足a.id=b.aid的資料,若a表沒有滿足條件的資料,設為null。

舉例:a表:

查詢語句:select * from a right outer join b on a.id=b.id。

將b表的每一條資料拿出來,遍歷a表進行對比,將a表中滿足條件的資料加到b表資料後面作為查詢結果,a表中不滿足條件的資料把null加到b表資料後面作為查詢結果。

結果:

其實右外連線和左外連線都乙個模子裡刻出來的,將表對換下右外連線馬上變左外連線。

2.3 全連線

全連線會返回相關聯的兩張表的所有關聯資料,如果某行在另一張表中沒有匹配的值,則設為null。

相當於左外連線+右外連線。

寫法示例:select * from a full outer join b on a.id=b.id。(outer可忽略)

注意:mysql不支援全連線

自連線意思是把自身表當成另外一張表看待,互相關聯查詢,連線方式可以使用以上的內外連線。

這種連線方式可以解決很多奇怪的問題。

a表:

查詢語句:select ab.* from a ab,a ac where ab.id>ac.id

結果:

SQL關聯查詢

一 關聯基礎 連線查詢 查詢兩個或兩個以上資料表或檢視的查詢,通常建立在存在相互關係的父子表之間。關聯查詢 查詢的結果集中的字段可能來自多張表。要從多張表中獲取資料時,就要找到這幾張表記錄的對應關係,然後建立聯絡後分別獲取。所以連線條件 指明表之間記錄的對應關係 在關聯查詢中十分關鍵。n 張表關聯查...

SQL關聯查詢

select from a,b c 或者 select from a cross join b cross join c 注 沒有任何關聯條件,結果是 笛卡爾積,結果集 會很大,沒有意義,很少使用。select from a,b where a.id b.id 或者 select from a in...

SQL關聯查詢

從2張或多張表中,取出有關聯的資料 關聯查詢一共有幾種情況 內連線 inner join cross join 1 形式一 select 字段列表 from a表 inner join b表 on 關聯條件 where 其他篩選條件 說明 如果不寫關聯條件,會出現一種現象 笛卡爾積 關聯條件的個數 ...