外连接 - 对From子句的限制

时间:2016-05-10 19:45:46

标签: sql outer-join

我是SQL新手。我遇到的问题是我在使用LEFT JOIN时尝试从逻辑上理解对From子句的限制,我已经学习了where子句的限制,但我以前从未见过这个。我读了这篇文章,https://stackoverflow.com/questions/8311096/whats-the-difference-between-where-clause-and-on-clause-when-table-left-join#=  但我仍然感到困惑。

所以我的代码就是这个。

Select e.last_name
      ,e.first_name
      ,e.marital_status_code
      ,ms.short_desc
from entity e
left join marital_status ms 
     on e.marital_status_code = ms.marital_status_code AND ms.marital_status_code = 'M'
where e.last_name = 'Hello'
order by 3
;

当我对Where子句进行限制

时,我完全明白了

where e.last_name = 'Hello'
AND marital_status_code = 'M'
 order by 3
    ;

当我对像这样的From子句施加限制

时,请帮助我发生什么/逻辑如何工作
left join marital_status ms 
         on e.marital_status_code = ms.marital_status_code AND ms.marital_status_code = 'M'

1 个答案:

答案 0 :(得分:0)

left join marital_status ms 
     on e.marital_status_code = ms.marital_status_code AND ms.marital_status_code = 'M'

这是加入的条件。

这是对何时匹配两行的限制。因此,当两个表具有相同的marital_status_code并且marital_status_code在marital_table中为''M'时,这将在另一个表中找到匹配。

是相同的,因为没有加入并说

WHERE e.marital_status_code = 'M'

如果marital_status表中只有一行,其marital_status_code为'M'

同样如果在marital_status表中没有这样的行,则无所事事。