記得我剛入門SQL的時候老師和書上都說left join做外連接就是左邊的表的數量就是查詢結果的數量,其實這是不對的。今天突然想起一定要提向大家。我知道老師是爲了讓學生快些入門,因爲這句話只考慮了右表沒有與左表關聯數據的情況但是如果右表有多條與左表關聯的數據呢?所以查詢結果應該是大於等於左表記錄條數纔對而不是等於。
下面用實例說明問題:
table A(用戶信息)
UID USERNAME
------ ------------------
1 張三
2 李四
3 王五
table B(用戶登錄記錄)
UID Time
------- -------------
2 2010-10-28 13:58:40
2 2010-10-28 13:58:48
2 2010-10-28 13:58:54
3 2010-10-28 13:58:59
3 2010-10-28 13:59:05
select A.*,B.Time from A left join B
一共是6條記錄
UID USERNAME Time
------ ------------------ ------------
1 張三 NULL
2 李四 2010-10-28 13:58:40
2 李四 2010-10-28 13:58:48
2 李四 2010-10-28 13:58:54
3 王五 2010-10-28 13:58:59
3 王五 2010-10-28 13:59:05
當右表沒有記錄的時候用null和左表匹配,當右表有記錄而且是多條記錄的時候左表記錄要重複以匹配右表的記錄。其實這樣是有用的自己想想看哦。