2011-08-03 11 views
1

我們一直在做查詢一堆不同的方式和查詢已經工作的時候,我們做了您是否必須將表格「ON」連接起來,還是隻能將它們等同於where子句?

SELECT t.thing FROM table1 t JOIN table2 s WHERE t.something = s.somethingelse AND t.something = 1 

,並與所有的查詢工作,除了一個。這一次查詢是永遠掛和崩潰我們的服務器,但它顯然是工作,如果我們做到這一點,如:

SELECT t.thing FROM table1 t JOIN table2 s ON t.something = s.somethingelse WHERE t.something = 1 

我們正在試圖找出如果問題是由於查詢結構或由於一些腐敗我們正在查詢的帳戶。

第一個語法是否正確?謝謝。

+0

我想如果你做第一個,你不想加入關鍵字。用逗號分隔兩個表格。我不確定如果你說JOIN但不提供ON部分,它會做什麼。我會認爲它會給你一個語法錯誤。 – Marvo

+2

FWIW,每當你列出FROM中的表格和WHERE中的「加入」時,神會殺死一隻小貓。 –

+0

@Derek:恐怖分子也贏了 –

回答

0

您需要使用ON子句。儘管您也可以使用逗號進行連接,例如:SELECT * FROM table1,table2;

希望有幫助!

0

有不同的ANSI格式..你可以使用

Select ... 
    from tbl1 join tbl2 on tbl1.fld = tbl2.fld 

OR

select ... 
    from tbl1, tbl2 
    where tbl1.fld = tbl2.fld... 

顯式連接是您明確表示自己以後發展比較常見格式的表是如何相關不考慮過濾標準。

0

你的第一個語法錯過了ON。當你加入時,必須告訴連接發生的是什麼字段。

我建議使用JOIN ON WHERE來完成您的連接。

1)您的where子句將更容易閱讀,因爲它不會被加入where子句污染。 2)你的連接部分更容易閱讀和理解。

我們都同意這兩種方法的工作,但由於這些論點,加入一個更好。

我的2美分

相關問題