2014-09-30 108 views
2

我希望获得关于此查询使用何种连接类型的详细信息 。当连接条件是where子句时使用的连接类型子句

select table1.column, table2.column 
from table1, table2 
where table1.key = table2.key 
and (some filter conditions) 
+1

使用明确的'join'语法,您不必担心这些细节。 – 2014-09-30 14:01:28

+1

当你这样做时,你做一个INNER JOIN。 – d34n5 2014-09-30 14:05:55

+0

我正在使用Oracle DB ...所以这是相同的内部连接...即选择table1.column,table2.column从表1内部连接table2其中table1.key = table2.key和(一些过滤条件) – user3514648 2014-09-30 14:06:33

回答

3

当你使用这样的符号:

table1,table2你建立一个潜在CROSS JOIN,但你已经把WHERE条款的条件table1.key = table2.key所以你CROSS JOIN成为INNER JOIN

我建议你使用有关加入一个明确的符号,而不是使用逗号喜欢你的查询写:

select table1.column, table2.column 
from table1 
inner join table2 
on table1.key = table2.key 
where (some filter conditions) 

这样你exactely知道要使用哪个JOIN和SQL语法分析程序,如果你错过某些子句(如ON)会警告您

+0

hy乔... thanx ...但是当我把这两个查询的记录数itz不匹配 – user3514648 2014-09-30 14:11:25

+0

@ user3514648:请发布您关于COUNT的查询 – 2014-09-30 14:13:46

+0

@ user3514648:Joe的回答是正确的,他的查询完全符合您的查询的要求。所以这一定是你的错误。 – 2014-09-30 14:50:56