添加联接是否会更改结果集

时间:2014-05-23 13:20:51

标签: c# sql

我有一个连接两个表的查询,我认为它是SQL中的内连接,因为我使用的是Entity Framework的语法。 所以我有这样的事情:

from s in this.Table1
join a in this.Table2 on s.somefield equals a.somefield
where ( // same conditions.... )
// 

然后我又有一个额外加入:

from s in this.Table1
join a in this.Table2 on s.somefield equals a.somefield
join b in this.Table3 on a.anotherfield equals b.anotherfield
where ( // same conditions .... )
// 

2 个答案:

答案 0 :(得分:1)

肯定会改变结果。在第一个查询中,您将获得Table1和表2之间的匹配记录,这些记录符合某些条件 - 在where where子句中,而在第二个查询中,您可以获得表,Table1,Table2和table3之间的匹配记录,这些记录符合其他一些条件 - 你在哪里的条款 - 。如你所见,结果集是不同的,正如Gordon在他的评论中指出的那样,这就是你使用连接的原因

答案 1 :(得分:1)

A"加入" ("内部连接"的缩写)产生来自Table1的行,并且只产生来自Table2的行,其中" ON"条款是真的。

例如表格:

Person (ID, Name)
1, 'Bob'
2, 'Ted'
3, 'Jill'

Book(ID, BookName, PersonId)
1, 'SQL', 2
2, 'EntityFramework', 4

Select *
From Person
INNER JOIN Book on Person.ID = Book.PersonId

这将产生两个表的结果,其中" Person.ID = Book.PersonId":

ID, Name, ID, BookName, PersonId
2, 'Ted', 1, 'SQL', 2

因此,在您的情况下,您添加的每个内部联接将根据每个JOIN \ ON子句进一步限制最终结果集!希望这是有道理的。