最近碰到sql左右連線問題,查閱了有關資料,現在做一些總結:
笛卡爾積
左連線右連線區別
1. 笛卡爾積:在數學中,兩個集合x和y的笛卡兒積(cartesian product),又稱直積,表示為x × y,第乙個物件是x的成員而第二個物件是y的所有可能有序對的其中乙個成員。
設a,b為集合,用a中元素為第一元素,b中元素為第二元素構成有序對,所有這樣的有序對組成的集合叫做a與b的笛卡爾積,記作axb.
笛卡爾積的符號化為:
a×b=
例如,a=, b=,則
a×b=
b×a=
2. 左連線:上面講了笛卡爾積,那麼左連線和這個有什麼關係,就是以左表(a)為主表,右表(b)以on條件來匹配;
select * from a left join b on a.id=b.id;
表a
表b
當執行 select * from a left join b on a.id=b.id 結果如下:
結果是:以左表(a)為基準,顯示右表(b)匹配到的資訊,對於左表中沒有匹配到的,顯示為null;
3.右連線:右連線當然就是以右表作為基準表了;
當執行 select * from a right join b on a.id=b.id 結果如下:
結果顯示 :以右表(b)左右基準,b表只有3個記錄,a表有4個記錄,
a匹配b,以a為基準,所以只顯示三條記錄
4.區別:根據上面的結果,就能發現左右連線就是關於,以左表或者右表來作為基準,來進行匹配顯示的過程;
如果你想以左表來作為基準顯示就用左表,反之,亦是如此!根據業務需求來改變!
mysql左右連線
左連線即左表中的資料必須顯示。左 右連線查詢實際上是指定以哪個表的資料為準。有兩個表 table1 table id name password 1 aaa a 2 bbb b 3 ccc c table 左連線sql語句 select table1.id,table1.name,table2.po...
Mysql 左右連線
例項 list pdo fetchall select a.id,a.name,a.time,m.id,m.field from tablename user as a left join tablename group as m on a.id m.replyid 左連線 以左表為標準 到右表尋找...
mysql 右連線 mysql 左右連線
舉例說明 假設您有兩個表,每個表只有乙個列,表資料如下 a b1 3 2 43 5 4 6注意,1,2 是a表唯一的,3,4 是公共的,並且 5,6 是b表獨有的 內連線內連線是a表的所有行交上b表的所有行得出的結果集 select from a inner join b on a.a b.b se...