sql連表查詢

2021-10-22 13:14:44 字數 1538 閱讀 7490

1.join和union區別

join 是兩張表做交連後裡面條件相同的部分記錄產生乙個記錄集,交集

union是產生的兩個記錄集(欄位要一樣的)並在一起,成為乙個新的記錄集。並集

join用於按照on條件聯接兩個表,主要有四種:

inner join:內部聯接兩個表中的記錄,僅當至少有乙個同屬於兩表的行符合聯接條件時,內聯接才返回行。我理解的是只要記錄不符合on條件,就不會顯示在結果集內。

left join / left outer join:外部聯接兩個表中的記錄,幷包含左表中的全部記錄。如果左表的某記錄在右表中沒有匹配記錄,則在相關聯的結果集中右表的所有選擇列表列均為空值。理解為即使不符合on條件,左表中的記錄也全部顯示出來,且結果集中該類記錄的右表字段為空值。

right join / right outer join:外部聯接兩個表中的記錄,幷包含右表中的全部記錄。簡單說就是和leftjoin反過來。

full join / full outer join:完整外部聯接返回左表和右表中的所有行。就是leftjoin和rightjoin和合併,左右兩表的資料都全部顯示。

join的基本語法:

select table1.* from table1 join table2 on table1.id=table2.id

sql寫法

內連線innerjoin:

select msp.name, party.name

from msp join party on party=code

或select msp.name, party.name

from msp inner join party on party=code

左連線leftjoin :

select msp.name, party.name

from msp left join party on party=code

右連線rightjoin :

select msp.name, party.name

from msp right join party on msp.party=party.code

全連線(fulljoin):

select msp.name, party.name

from msp full join party on msp.party=party.code

union運算子

將兩個或更多查詢的結果集組合為單個結果集,該結果集包含聯合查詢中的所有查詢的全部行。union的結果集列名與union運算子中第乙個select語句的結果集的列名相同。另乙個select語句的結果集列名將被忽略。

其中兩種不同的用法是union和unionall,區別在於union從結果集中刪除重複的行。如果使用unionall 將包含所有行並且將不刪除重複的行。

union和unionall的區別:

union 檢查重複

union all 不做檢查

比如select 『a』 union select 『a』 輸出就是一行 a

比如select 『a』 union all select 『a』 輸出就是兩行 a

SQL連表查詢

感覺好笨,老大寫過想了一會才想明白。因為資料都是在兩個表中的兩個表中,所以是四個表。應該先把乙個表中的兩個表篩選出來,然後再用union.sql union 操作符 union 操作符用於合併兩個或多個 select 語句的結果集。請注意,union 內部的 select 語句必須擁有相同數量的列。...

SQL連表查詢 JOIN

select operation,time,ip,name cnt,mac from tbl left join user on tbl.mid user.mid 最外層select查詢項可以是t user表的字段也可以是tbl表中的字段 sql中的幾種join 1 left join表示式 連線組...

SQL連表查詢筆記二

兩張表 學生表 t student 和班級表 t class 內連線 inner join 1.等值連線 在連線條件中使用等號 運算子,其查詢結果中列出被連線表中的所有列,其中包括重複列。select from t student s,t class c where s.classid c.clas...