我对左右连接运算符有点困惑。
select *
from <left table> lt
left join <right table> rt on lt.pk = rt.fk
我总是对连接的“左”侧的确切位置感到困惑。 “左连接”关键字左侧的表格是“左表”,或者是左表中on子句左侧的表,如同左侧表中的左表。标志。我读过的文章表明它应该是
然而......现在考虑以下选择声明......
select *
from <some table> st
inner join <left table> lt on st.pk = lt.fk
left join <right table r on rt.fk = st.pk
在上面的代码位是左表?考虑到之前的定义,人们会假设因为模糊或不清晰(因为它实际上并没有直接留下)......我认为在on子句中指定“左表”会更有意义
所以我的每一点似乎都在与这种逻辑作斗争......我需要一点澄清......请和谢谢。
答案 0 :(得分:2)
列出的第一个表是将返回所有行的表。以LEFT JOIN
命名的表将仅返回与第一个表匹配的行,并将返回未找到匹配项的NULL值。
答案 1 :(得分:0)
一般情况下 - 不,因为你再引入一个过滤表st。 但 IF lt的每一行都有相应的唯一的行 - 是的,行数相同,列的集合会有所不同。但是第一个查询的结果集将是第二个查询的结果集的子集(仅与st表中的列不同)