直接看實例;
test表
test2表
JOIN
SELECT * FROM test JOIN test2 ON test.`book_id` =test2.`book_id` WHERE test.book_name='java'
與
SELECT * FROM test JOIN test2 ON test.`book_id` =test2.`book_id` AND test.book_name='java'
的結果是一樣的。
LEFT JOIN
SELECT * FROM test LEFT JOIN test2 ON test.`book_id` =test2.`book_id` WHERE test.book_name='java'
SELECT * FROM test LEFT JOIN test2 ON test.`book_id` =test2.`book_id` AND test.book_name='java'
RIGHT JOIN
SELECT * FROM thai_test RIGHT JOIN thai_test2 ON thai_test.`book_id` =thai_test2.`book_id` WHERE thai_test.book_name='java'
SELECT * FROM thai_test RIGHT JOIN thai_test2 ON thai_test.`book_id` =thai_test2.`book_id` AND thai_test.book_name='java'
________________________________________________________________________
ps.以下爲轉載
________________________________________________________________________
1,where 是在兩個表join完成後,再附上where條件。
2,而 and 則是在表連接前過濾A表或B表裏面哪些記錄符合連接條件,同時會兼顧是left
join還是right join。即假如是左連接的話,如果左邊表的某條記錄不符合連接條件,那麼它不進行連接,但是仍然留在結果集中(此時右邊部分的連接結果爲NULL)。
3,建議儘量用where來過濾條件,以避免複雜的邏輯考慮。(除非在某些情況下(後接其他sql語句),用and會報錯,才用and,但要考慮是否影響正確結果。)