為便於更多的技友快速讀懂、理解,我們只討論2張表物件進行連線操作的情況,大於2張表物件進行的連線操作原理也是一樣的。
select m.columnname……,n.* columnname…..
from left_table m left join right_table n
on m.columnname_join=n.columnname_join and n.columnname=***
where m.columnname=***…..
select m.columnname……,n.* columnname…..
from left_table m right join right_table n on m. columnname_join=n. columnname_join and m. columnname=***
where n.columnname=***…..
select m.columnname……,n.* columnname…..
from left_table m [inner] join right_table n on m. columnname_join=n. columnname_join
where m.columnname=***….. and n.columnname=***….
或者select m.columnname……,n.* columnname…..
from left_table m , right_table n
where m. columnname_join=n. columnname_join and
m.columnname=***….. and n.columnname=***….
說明:
on子句連線條件,用於把2表中等值的記錄連線在一起,但是不影響記錄集的數量。若是表left_table中的某記錄,無法在表right_table找到對應的記錄,則此記錄依然顯示在記錄集中,只是表 right_table需要在查詢顯示的列的值用null替代;(一言以蔽之就是:當使用left join的時候,此時a left join b 此事的a表為主表,結果集中將會顯示a表的所有資料和b表中的滿足條件的資料。如果a表的資料在b表中沒有對應資料則以null代替)。
on子句連線條件中表right_table.columnname=***用於控制right_table表是否有符合要求的列值還是用null替換的方式顯示在查詢列中,不影響記錄集的數量;
where字句控制記錄是否符合查詢要求,不符合則過濾掉;
簡單點說,就是 「left_table.columnname_join=right_table.columnname_join」用於統計兩個表的等值連線的記錄集,on子句
連線條件就是限制right_table的記錄集大小,where子句的條件是限制最終結果集的大小。最終結果集的大小是顯示「left_table「表的所有記錄,和「left_table「匹配的」right_table「的記錄顯示」right_table「列值,不匹配的話,顯示對應的」right_table「顯示為null(最終結果集的大小是left_table刨除where條件的記錄數)
on子句連線條件,用於把2表中等值的記錄連線在一起,若是表right_table中的某記錄,無法在表left_table找到對應的記錄,則表 left_table需要在查詢顯示的列的值用null替代;
on子句連線條件中表left_table.columnname=***用於控制left_table表是否有符合要求的列值,還是用null替換的方式顯示在查詢列表中;
where字句控制記錄是否符合查詢要求,不符合則過濾掉;
簡單點說,就是 「left_table.columnname_join=right_table.columnname_join」用於統計兩個表的等值連線的記錄集,on子句
連線條件就是限制left_table的記錄集大小,where子句的條件是限制最終結果集的大小。最終結果集的大小是顯示「right_table」表的所有記錄,和「right_table「匹配的」left_table「的記錄顯示」left_table「列值,不匹配的話,顯示對應的」left_table「顯示為null(最終結果集的大小是left_table刨除where條件的記錄數)
on子句連線條件,不再與左連線或右連線的功效一樣,除了作為2表記錄匹配的條件外,還會起到過濾記錄的作用,若left_table中記錄無法在right_table中找到對應的記錄,則會被過濾掉;
where字句,不管是涉及表left_table、表right_table上的限制條件,還是涉及2表連線的條件,都會對記錄集起到過濾作用,把不符合要求的記錄刷選掉;
select table a left join table b on a.id = b.ta_id**
注意:
1,其中on後面關聯的字段應該是同一字段(兩表關聯的外來鍵)
2,由於以左表為基準,左表一條記錄如果對應右表多條記錄,那查出的資料中右表的資料也只顯示一條,如果要都顯示,可以用group_contact()將字段用逗號隔開顯示在一條記錄上。所以右表不管有幾張,如果和左表都是一對一關係,則沒問題,存在一對多關係時,需要一定的處理。
mysql連線查詢例項 MySQL連線查詢例項詳解
建立表suppliers create table suppliers s id int not null auto increment,s name char 50 not null,s city char 50 null,s zip char 10 null,s call char 50 not...
mysql連線查詢例項 MySQL連線查詢例項詳解
建立表suppliers create table suppliers s id int not null auto increment,s name char 50 not null,s city char 50 null,s zip char 10 null,s call char 50 not...
mysql連線查詢on MySQL連線查詢例項詳解
建立表suppliers create table suppliers s id int not null auto increment,s name char 50 not null,s city char 50 null,s zip char 10 null,s call char 50 not...