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...