美好的一天,SQL服務器LEFT JOIN沒有給予正確的結果
我看過一些人正面臨着左連接,不給正確的結果,也許我不理解所有問題的答案是很好的其他問題。
這裏是我在我的查詢有問題
SELECT
TA.column1
,D.column2
,D.column3
,TA.column4
,MI.[column5]
,MI.[column6]
,D.[column7]
,D.[column8]
,TA.[column9]
,TA.[column10]
,UC.[column11]
,UC.[column12]
,TA.[column13]
,TA.[column14]
,TA.[column15]
,TA.[column16]
,TA.[column17]
,'0' AS column18
,TA.[column19]
,'12.2' AS column20
,'None' AS column21
,'0' AS column22
,'1' AS column23
,TA.[column24]
,'0' AS column25
,'0' AS column26
,LD.column27
FROM [DB].[dbo].[Table1] AS TA WITH (NOLOCK)
FULL OUTER JOIN
[DB].[dbo].[Table2] AS LD WITH (NOLOCK)
ON
TA.[coulmn1]=LD.[coulmn5]
INNER JOIN
[DB].[dbo].[Table3] AS MI WITH (NOLOCK)
ON
TA.coulmn10 = MI.[coulmn3]
LEFT JOIN
[DB].[dbo].[Table4] AS D WITH (NOLOCK)
ON
TA.coulmn25 = D.coulmn1
INNER JOIN
[DB1].[dbo].[Table5] AS UC WITH (NOLOCK)
ON
TA.coulmn12 = UC.coulmn3
WHERE
(LD.coulmn5 != TA.[coulmn1])
AND
(TA.[coulmn23]= '0')
的問題是,當我更新查詢和刪除
FULL OUTER JOIN
[DB].[dbo].[Table2] AS LD WITH (NOLOCK)
ON
TA.[coulmn1]=LD.[coulmn5]
以及刪除以下where子句:
WHERE (LD.coulmn5 != TA.[coulmn1]) AND
我在右邊的桌子上有3個結果。這是正確的,因爲一個結果沒有被寫入左表
當我放回左外連接和where子句我只看到2個結果再次,應該沒有三個結果與最後一列,LD.column27
顯示爲NULL
。 這一欄是接受NOT NULL
這可能是我沒有得到優先結果的原因嗎?
在查詢中,只有在所有內部聯接完成正確結果後,才應使用所有左側聯接,否則在左側聯接之前使用的所有內部聯接將僅視爲左側聯接。 – Mudassir 2014-12-02 07:31:24