今天的工作學習之路是一個數據庫的小知識,當時沒有區分出所以然,特此記錄分享一下子。
眾所周知,數據庫的表都是單獨存在的,但是當我們進行聯合查詢(多表查詢)時,我們獲得數據庫返回的值時就好像在一張表里一樣,這是因為在進行聯合查詢時數據庫會生成一個臨時表返回給我們所想要的數據信息,這時我們都是通過LEFT JOIN 等語句進行相關聯,並且我們也會為我們所想查詢的數據進行一個篩選,這時我們就會用到過濾語句。
LEFT JOIN ON WHERE:在臨時表生成后,再對臨時表的數據進行過濾,再返回左表。
LEFT JOIN ON AND:在臨時表生成的過程時,ON中的條件不管是否為真,都將返回左表。
例如:
表1.id 表1.value 表2.value 表2.name
1 100 100 開心
2 200 200 很開心
3 300 300 超級開心
4 400 400 無敵開心
SQL語句如下:
[1] SELECT * FROM 表1 LEFT JOIN 表2 ON (表1.value = 表2.value) WHERE 表2.name = 開心
[2] SELECT * FROM 表1 LEFT JOIN 表2 ON (表1.value = 表2.value) ON 表2.name = 開心
當執行[1]的時候得:
表1.id 表1.value 表2.value 表2.name
1 100 100 開心
當執行[2]的時候得:
表1.id 表1.value 表2.value 表2.name
1 100 100 開心
2 200 NULL NULL
3 300 NULL NULL
4 400 NULL NULL
同理,RIGHT JOIN和FULL JOIN都具備這個特性,注意,INNER JOIN不具備這個特性。
今天就這么愉快的結束吧!
我的心願是,改變世界!
