我是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'
答案 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表中没有这样的行,则无所事事。