a表
aaa bbb ccc
1a 1b 1c
2a 2b 2c
3a 3b 3c
b表
aaa bbb ddd
1a 1b 1d
4a 4b 4d
1、union
union [all]
all:表示將查詢的所有結果都合併到結果集中,若不加all會將重複的行只保留一行
[sql]view plain
copy
print?
select
* from
a union
select
* from
b
結果:(查詢的字段數相同)
結果:(重複的記錄被覆蓋)
[sql]view plain
copy
print?
select
aaa,bbb
from
a union
allselect
aaa,bbb
from
b
結果:(加上all,允許重複的行)
2、join
連線分為內連線、外連線、交叉連線
2.1、內連線 inner join (預設的連線方式)
只有至少有(指定的字段)一行的記錄在兩個查詢表中都有記錄,此時才有結果集。即返回兩個表之間的交集(相同欄位的記錄)
[sql]view plain
copy
print?
select
* from
`a`
inner
join
b on
a.aaa = b.aaa
結果:(兩表有相同的字段的值的記錄,會將字段連線起來,而不是union,將結果追加到記錄的結果集後)
2.2、外連線
a、left join 左連線
返回查詢表的記錄,包含左邊表的所有記錄,如果左邊表中的記錄在右邊表中沒有對應的記錄,則所返回右邊表的字段結果為空(差集)
[sql]view plain
copy
print?
select
* from
`a`
left
join
`b`
ona.aaa = b.aaa
結果:(b表沒有的字段的值為空null)
b、right join 右連線
與left join相反,查詢的記錄包含右邊表的所有記錄,如果右邊表中的記錄在左邊表中沒有對應的記錄,則返回左邊表的字段值為空(差集)
[sql]view plain
copy
print?
select
* from
`b`
left
join
`a`
ona.aaa = b.aaa
結果:(a表沒有的字段值為空null)
c、full join 全連線
返回左表和右表中的所有記錄,即兩表的資料全部顯示
[sql]view plain
copy
print?
select
* from
a full
join
b
結果:(返回所有的記錄)
3、cross in 交叉連線
不帶where子句,返回兩個表中所有笛卡爾積,記錄數為a表和b表記錄數的積
[sql]view plain
copy
print?
select
* from
`b`
cross
join
`a`
結果:
[sql]view plain
copy
print?
select
* from
`a`
cross
join
`b`
結果:
SQL 聯合查詢
use xsgl go select from student select from cause select from exam 聯合查詢 join on 預設為inner,如果有right or left 那麼就指的是外聯,outer 可以不寫 1.最長見為內聯 table1 inner jo...
sql聯合查詢
sql查詢 多表聯合查詢 將具有相同的字段的查詢結果合併為乙個表 關鍵字 union 例項 查詢subs表 select subs id,prefix,acc nbr,cust id,user id,acct id,price plan id,area id,update date from sub...
sql 聯合查詢
概述 聯合查詢效率較高,舉例子來說明聯合查詢 內聯inner join 左聯left outer join 右聯right outer join 全聯full outer join 的好處及用法。聯合查詢效率較高,以下例子來說明聯合查詢 內聯 左聯 右聯 全聯 的好處 t1表結構 使用者名稱,密碼 ...