这个WHERE子句和这个Join有什么区别?

时间:2012-03-08 18:56:16

标签: sql postgresql join

这有什么区别:

SELECT * FROM table1, table2 WHERE table1.primary_id = table2.primary_id

而且:

SELECT * FROM table1 FULL JOIN table2 ON table1.primary_id = table2.primary_id

2 个答案:

答案 0 :(得分:4)

第一个查询是隐式INNER JOIN,您应该始终使用显式语法。在这种情况下,查询将返回table1和table2中的记录。第二个查询将返回两个表的所有记录,如果另一个表中没有匹配则显示NULL

答案 1 :(得分:0)

FULL JOIN关键字返回table1中的所有行以及table2中的所有行。如果table1中的行中table2中没有匹配项,或者table2中的行中table1中没有匹配项,则会列出这些行同样,填充nulls

第一个查询只返回table1table2primaryId)匹配的结果。它相当于INNER JOIN