表a記錄如下:
aid anum
1 a20050111
2 a20050112
3 a20050113
4 a20050114
5 a20050115
表b記錄如下:
bid bname
1 2006032401
2 2006032402
3 2006032403
4 2006032404
8 2006032408
建立這兩個表sql語句如下:
create table a
aid int( 1 ) auto_increment primary key,
anum char( 20 ) )
create table b(
bid int( 1 ) not null auto_increment primary key,
bname char( 20 ) )
insert into a
values ( 1, 'a20050111' ) , ( 2, 'a20050112' ) , ( 3, 'a20050113' ), ( 4, 'a20050114' ) , ( 5, 'a20050115' );
insert into b
values ( 1, ' 2006032401' ) , ( 2, '2006032402' ) , ( 3,'2006032403' ) , ( 4, '2006032404' ) , ( 8, '2006032408' );
實驗如下:
1.left join(左聯接)
sql語句如下:
select * from a
left join b
on a.aid =b.bid
結果如下:
aid anum bid bname
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
5 a20050115 null null
(所影響的行數為 5 行)
結果說明:
left join是以a表的記錄為基礎的,a可以看成左表,b可以看成右表,leftjoin是以左表為準的.
換句話說,左表(a)的記錄將會全部表示出來,而右表(b)只會顯示符合搜尋條件的記錄(例子中為: a.aid =b.bid).
b表記錄不足的地方均為null.
2.right join(右聯接)
sql語句如下:
select * from a
right joing b
on a.aid = b.bid
結果如下:
aid anum bid bname
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
null null 8 2006032408
(所影響的行數為 5 行)
結果說明:
仔細觀察一下,就會發現,和leftjoin的結果剛好相反,這次是以右表(b)為基礎的,a表不足的地方用null填充.
3.inner join(相等聯接或內聯接)
sql語句如下:
select * from a
inner join b
on a.aid =b.bid
等同於以下sql句:
select *
from a,b
where a.aid = b.bid
結果如下:
aid anum bid bname
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032
原文:
多表Join 查詢
語法格式 from 表1 inner join 表2 on 表1.欄位號 表2.欄位號 inner join 表3 on 表1.欄位號 表3.欄位號 inner join 表4 on member.欄位號 表4.欄位號 inner join 表x on member.欄位號 表x.欄位號,只要套用該...
ThinkPHP多表查詢之join方法
現在的目的是要把article category中的name欄位匯入到article中去 表yz article如下 表yz article category如下 貼上其他幾個案例裡面的 data m groups g field g.id,g.group name,e.uid join left ...
多表查詢用 join 好嗎
sql連線查詢的由來 人們對20實際80年代的sql標準提出批評,認為select語句中無直接的連線或自然連線操作。sql吸收了這個意見,用較為直接的形式表示各式各樣的連線操作,這些操作可在from字句中以直接的形式指出。在書寫兩個關係的連線操作時,sql2把連線操作符分成連線型別和連線條件兩部分 ...