Mysql連線查詢

2021-10-01 12:49:37 字數 2698 閱讀 5730

為便於更多的技友快速讀懂、理解,我們只討論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...