【发布时间】:2015-03-31 12:07:09
【问题描述】:
我一直在研究联接,我只是希望有人确认我对它的理解。
当涉及到连接时,它总是 ParentTable 右外连接 ChildTable 这也是正确的:ChildTable left outer join ParentTable.
这有什么问题:ParentTable 左外连接 ChildTable 这将给出 空值?
我在下面做了一个快速选择,对吗?
Select Mom, Brother from ParentTable right outer join ChildTable
on ParentTable.LastName = ChildTable.LastName
或者是左外连接还是内连接? 下周二我有一个即将进行的测试,这让我很困惑,任何帮助都会很棒!
【问题讨论】:
-
RIGHT或LEFT指的是“主”表,如果你愿意的话。您从中获取所有记录的表,匹配的和不匹配的。那么,您想从哪个表中获取所有记录? -
所以如果正确,方向总是指向父表,那么我给出的示例是错误的?
-
所以它看起来像这样?从 ParentTable 中选择 Mom, Brother 左外连接 ChildTable on ParentTable.LastName = ChildTable.LastName
-
这两个查询是不同的。首先,由于左连接 (
ParentTable left outer join...),您将从ParentTable中获取所有行。在第二个中,您将从ChildTable(right outer join ChildTable) 中获取所有行。自己运行查询,我敢打赌,你会看到不同之处。这是一个很棒的visualization,可以帮助您理解这一点。 -
这不是一个真正的数据库,它只是我想出的一个例子,但我确实有一个数据库,我在一个月前完成了工作,它有 3 个连接.我对所有这些都使用了右外连接,它给了我 50 条记录中的 2 条记录,这是正确的答案。出于好奇,我将一个右外连接替换为左外连接,它仍然给我相同的结果。
标签: sql-server