這是什麼之間的區別:此WHERE子句和此加入之間有什麼區別?
SELECT * FROM table1, table2 WHERE table1.primary_id = table2.primary_id
這:
SELECT * FROM table1 FULL JOIN table2 ON table1.primary_id = table2.primary_id
這是什麼之間的區別:此WHERE子句和此加入之間有什麼區別?
SELECT * FROM table1, table2 WHERE table1.primary_id = table2.primary_id
這:
SELECT * FROM table1 FULL JOIN table2 ON table1.primary_id = table2.primary_id
第一個查詢是一個隱含INNER JOIN
,你應該總是使用顯式語法。在這種情況下,查詢將返回table1和table2中的記錄。第二個查詢將返回兩個表的所有記錄,如果另一個沒有匹配,則顯示NULL
。
FULL JOIN
關鍵字返回table1
的所有行,以及table2
的所有行。如果table1
中的某些行在table2
中沒有匹配項,或者table2
中的某些行中的行沒有table1
中的匹配項,那麼這些行也會列出,並填寫nulls
。
第一個查詢只會返回結果,其中table1
對table2
(primaryId
)匹配。這相當於一個INNER JOIN
。
+1對於我在前面滑動,幾乎完全一樣的東西,我正在打字。 – 2012-03-08 19:01:19
對,我必須真的很累你是正確的完全聯合會給我那些額外的空結果,但是你說這是一個隱式的內部聯接,所以如果我在第二個查詢中使用內聯接在我的例子中它將是相同但不推薦? – user519753 2012-03-08 19:04:06
它應該是相同的,**推薦使用'INNER JOIN'。 – 2012-03-08 19:05:26