1.Left Outer Join左外連接
設數據庫中有A、B兩表,A和B有共同的交集C,當我們想查詢出A的所有記錄時我們可以使用左外連接:
select <select_list> from TableA A Left Join TableB B on A.key=B.key
當我們只想查詢出只有A表才有的數據而B表沒有的數據時,即去掉集合C
select <select_list> from TableA A Left Join TableB B on A.key=B.key where B.key is NULL
2.右外連接
右外連接與左連接是類似的,只是我們把哪個表看為基礎表的區別而已。左外連接將A作為基礎表,右連接我們把B作為基礎表。在A、B表中,查詢出B表的所有記錄
select <select_list> from TableA A Right Join TableB B on A.key=B.key
只查詢出B表存在而A表沒有的記錄
select <select_list> from TableA A Right Join TableB B on A.key=B.key where B.key is NULL
3.全連接
當需要查詢出A、B兩表的所有數據時可以使用全鏈接(Full Join)但在Mysql中是不支持Full Join的。但我們可以通過左連接+右連接的聯合達到Full Join的效果,即:
select <select_list> from TableA A Left Join TableB B on A.key=B.key UNION ALL select <select_list> from TableA A Right Join TableB B on A.key=B.key
4.交叉連接
交叉連接(cross join)又稱為笛卡兒積連接(cartesian join)或差乘,如果A和B是兩個集合,它們的交叉連接記為:A x B。即A表中的一條記錄與B表中每一條記錄進行匹配,產生一個新的結果集。如果A中有4條記錄,B中有5條記錄,則會產生20條結果
select <select_listA>,<select_listB> from TableA A CROSS JOIN TableB B