MySQL中條件放在where后面與放在on后面的區別


假設有兩種表:test_on_position表和address表,address表存放地址,test_on_position存放會員及其常用的地址,數據如下:

address表:

test_on_position表:

1. left join

條件在where后面

SELECT
	*
FROM
	test_on_position
LEFT JOIN address ON test_on_position.address = address.id
WHERE
	test_on_position.address IS NOT NULL

運行結果:

條件在on后面

SELECT
	*
FROM
	test_on_position
LEFT JOIN address ON test_on_position.address = address.id AND test_on_position.address IS NOT NULL

運行結果:

結果分析

當條件放在on后面時,無論on條件的真假,都會返回左表的值;

當條件放在where后面時,只有滿足條件的記錄會返回。

inner join

條件在on后面

SELECT
	*
FROM
	test_on_position
INNER JOIN address ON test_on_position.address = address.id AND test_on_position.address IS NOT NULL

運行結果:

條件在where后面

SELECT
	*
FROM
	test_on_position
INNER JOIN address ON test_on_position.address = address.id
WHERE
	test_on_position.address IS NOT NULL

運行結果:

結果分析

無論條件放在哪里,都只會返回滿足條件的結果。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM