SELECT
A.RowId
FROM
dbo.Rows A
LEFT JOIN dbo.SpecialRows B ON A.RowId = B.RowId AND B.ExcludeRowId > 0
WHERE
A.FileId = 55
AND A.Active = 1
AND A.ExcludeRowId = 0
AND B.RowId IS NULL /* This is to perform EXCEPT like operation */
朋友,这是我的查询,我有几个相关的问题。
Q1)假设我有另一个与此相同的查询,除了前三个条件被移动到LEFT JOIN的ON子句。 它会生成相同的结果集吗?
Q2)一般来说,如果我使用LEFT JOIN,那么与右边表相关的所有条件(在这种情况下都是dbo.SpecialRows)必须在ON子句中,这是正确的吗?
Q3)另外如果我在WHERE子句或ON子句中放置与左侧表相关的条件(在这种情况下是dbo.Rows),那么结果集将是相同的,这是正确的吗?
请解释一下,谢谢!
答案 0 :(得分:2)
问题1
问题2
问题3