又要寫一個部落格了,真是讨厭啊,一直靠百度活着,sql還寫錯了,真是醉了讓自己。
資料庫表的連接配接:
一,内連結又叫等值連接配接:就是求兩個表相同的部分;内連接配接:在每個表中找出符合條件的共有記錄。[x inner join y on...]
這裡用網上的資料表做解釋吧:嘿嘿
二,外連接配接:左連接配接,右連接配接和全連接配接。
2,左連接配接的應用執行個體:
根據左表的記錄,在被連接配接的右表中找出符合條件的記錄與之比對,如果找不到與左表比對的,用null表示:

文法格式:
Select * from tableA left join tableB
On tableA.column1=tableB.column2;
編寫一個 SQL 查詢,滿足條件:無論 person 是否有位址資訊,都需要基于上述兩表提供 person 的以下資訊:
FirstName, LastName, City, State
# Write your MySQL query statement below
select a.FirstName, a.LastName, b.City,b.State from
Person as a left join Address as b
on a.PersonId=b.PersonId
是以分析,以Person表為主,都要有位址資訊。規律,就是以哪個表為主就以何種方式連接配接。
3.右連接配接:根據右表的記錄,在被連接配接的左表中找出符合條件的記錄與之比對,如果找不到比對的,用null填充。[x right [outer] join y on...]
右連接配接語句為
“Select * from tableA
right join tableB
On tableA.column1=tableB.column2;
4.全連接配接:傳回符合條件的所有表的記錄,沒有與之比對的,用null表示(結果是左連接配接和右連接配接的并集)
第一種寫法:(full join .. on ..)
三,自連接配接
前面介紹左連接配接、右連接配接都是必須有一張主表,另一張表是可選的,即比對的從表中的行不一定必須存在。
在全連接配接中,兩個表都是從表,在這種情況下,表A和表B的行比對,則會傳回表A中所有的行,即使它在表B中沒有比對的行,表B中所有的行,即使它在表A中沒有比對的行,即傳回表A和表B中所有的行,不論表A或表B中的行在另一張表中是否有比對。
MySQL資料庫中不提供全連接配接,可用left join和right join将兩張表的資料取出,再用union去重。
文法:Select * from tableA left join tableB
Ontable A.column1 = tableB.column1
Union
Select * from tableA right join tableB
OntableA.column1 = tableB.column1;