这是什么之间的区别:此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