我有一个连接两个表的查询,我认为它是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 .... )
//
答案 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子句进一步限制最终结果集!希望这是有道理的。