2
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左連接和條件
Q1)比方說,除了前3個條件移動到LEFT JOIN的ON子句之外,我還有另一個查詢與這個查詢相同。 它會生成相同的結果集嗎? Q2)一般情況下,如果我使用LEFT JOIN,那麼所有與右側表(這裏是dbo.SpecialRows)相關的條件必須在ON子句中,這是正確的嗎?
Q3)另外,如果我在WHERE子句或ON子句中放置與左側表(這是dbo.Rows)有關的條件,那麼結果集將是相同的,這是正確的嗎?
請解釋一下,謝謝!
我相信問題1是正確的。我設置了一個SQLFiddle來顯示2個場景如何返回不同的行數 - http://www.sqlfiddle.com/#!6/3d45b/5/0。 – 2014-10-27 17:29:17
Urrp。對,你是我的壞人 – RBarryYoung 2014-10-27 17:32:34