2013-06-18 19 views
1

好吧,我目前正與維護最近遷移到2008 [R2]遺留SQL Server 2005數據庫的任務,另外還有一些存儲過程的東西,如下列:在FROM中混合JOIN和COMMA表格列表;所列項目的含義

SELECT 
    @val = c.TableVal 
FROM 
    dbo.TaqbleA a 
    LEFT JOIN dbo.TableB b 
     ON a.TableId = b.TableId 
    ,dbo.TableC c 
WHERE 
    a.TableId = c.TableId 

拳我就知道了如表A和B所示的連接條件是正常的,我將如何重寫這個,但我想知道表C是否作爲左連接處理,因爲它是在LEFT JOIN之後列出的,或者如果它被視爲INNER JOIN ?我的直覺告訴我們這是一個INNER JOIN,但我不確定。這是什麼?

而且,我知道我不是一個誰見過這樣的事情只有一個,這將是件好事,這個答案在StackExchange永生......

感謝。

+0

對我來說看起來像笛卡爾產品 – chetan

+1

我不明白「WHERE p.TableId = r.TableId」 - 無法在查詢中看到p或r作爲表或別名 –

+0

感謝您指出這一點。 – bldink

回答

1

它實際上是INNER JOINCROSS JOIN;逗號的優先級低於明確的JOIN,所以FROM ... LEFT JOIN ... ON ..., ...意味着FROM (... LEFT JOIN ... ON ...), ...,而LEFT JOIN僅與前兩個表相關。