/*
A 和 B 兩張表都只有一個 ID 字段sql
好比A表的數據爲 ID 1,2,3,4,5,6select
B表的數據爲 ID 1,2,3sql語句
判斷 JOIN 查詢時候條件在 ON 和 WHERE 時的區別數據
ON 和 WHERE 查詢順序有關
標準查詢關鍵字執行順序爲 FROM->WHERE->GROUP BY->HAVING->ORDER BY
LEFT JOIN 是在 FROM 範圍內 因此先 ON 條件篩選表,而後兩表再作 LEFT JOIN
而對於 WHERE 來講是在 LEFT JOIN 結果再次篩選
*/查詢
select A.ID as AID, B.ID as BID
from A
left join
B
on A.ID = B.ID
where
B.ID<3;
/*
1.這個語句是先執行 LEFT JOIN 便是:
select A.ID as AID, B.ID as BID from A left join B on A.ID = B.ID
2.再將查詢結果中的 B.ID < 3 篩選出來
*/join
select A.ID as AID, B.ID as BID
from A
left join
B
on A.ID = B.ID and B.ID<3;
/*
1.這個語句是先安裝 ON 條件 B.ID < 3 篩選出來,便是先執行:
select ID from B where ID < 3;
2.再將查詢結果中的結果與A表作 LEFT JOIN,因此會保留A表全部的數據
ON與where的使用必定要注意場所:
(1):ON後面的篩選條件主要是針對的是關聯表【而對於主表刷選條件不適用】。
(2):對於主表的篩選條件應放在where後面,不該該放在ON後面。
(3):對於關聯表咱們要區分對待。若是是要條件查詢後才鏈接應該把查詢件放置於ON後。
若是是想在鏈接完畢後才篩選就應把條件放置於where後面。
(4): 對於關聯表咱們其實能夠先作子查詢再作join
第二個sql語句等價於
select A.ID as AID, B1.ID as BID
from A left join ( select B.ID from B where B.ID < 3 )B1 on A.ID = B1.ID */