Mysql關於join on where(and)的區別

直接看實例;

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,但要考慮是否影響正確結果。)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章