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 */
Друзья, это мой запрос, и у меня есть несколько вопросов.SQL Left Join and Conditions
Q1) Предположим, у меня есть другой запрос, такой же, как этот, кроме первого 3, когда условия перемещаются в положение ON LEFT JOIN. Будет ли он генерировать одинаковый набор результатов?
Q2) В общем случае, если я использую LEFT JOIN, тогда все условия, связанные с правой таблицей (которая является dbo.SpecialRows в этом случае), должны быть в положении ON, это правильно?
Q3) Также, если я ставлю условия, связанные с левой таблицей (которая является dbo.Rows в этом случае) в выражении WHERE или ON, тогда набор результатов будет таким же, это правильно?
Пожалуйста, объясните, спасибо!
Я считаю, что вопрос 1 верен. Я настраиваю SQLFiddle, чтобы показать, как два сценария возвращают разные подсчеты строк - http://www.sqlfiddle.com/#!6/3d45b/5/0. –
Urrp. Правильно ты, мой плохой ... – RBarryYoung