INNER JOIN ON vs WHERE子句為簡單起見,假設所有相關字段都是NOT NULL。你可以做:SELECT
table1.this, table2.that, table2.somethingelseFROM
table1, table2WHERE
table1.foreignkey = table2.primarykey AND (some other conditions)要不然:SELECT
table1.this, table2.that, table2.somethingelseFROM
table1 INNER JOIN table2 ON table1.foreignkey = table2.primarykeyWHERE
(some other conditions)這兩個是以同樣的方式工作MySQL嗎?
4 回答

嗶嗶one
TA貢獻1854條經驗 獲得超8個贊
INNER JOIN
是您應該使用的ANSI語法。
它通常被認為更具可讀性,尤其是當您加入大量表時。
OUTER JOIN
只要有需要,它也可以很容易地替換。
該WHERE
語法更關系模型為主。
兩個表格的結果JOIN
是應用過濾器的表的笛卡爾積,其僅選擇具有匹配的連接列的那些行。
使用WHERE
語法更容易看到這一點。
至于你的例子,在MySQL(以及一般的SQL)中,這兩個查詢是同義詞。
另請注意,MySQL也有一個STRAIGHT_JOIN
子句。
使用此子句,您可以控制JOIN
順序:在外循環中掃描哪個表以及在內循環中掃描哪個表。
你無法使用WHERE
語法在MySQL中控制它。

慕的地6264312
TA貢獻1817條經驗 獲得超6個贊
其他人指出,INNER JOIN有助于人類的可讀性,這是首要任務; 我同意。讓我試著解釋為什么連接語法更具可讀性。
一個基本的SELECT查詢是這樣的:
SELECT stuff FROM tables WHERE conditions
SELECT子句告訴我們什么,我們正在找回; FROM子句告訴我們從哪里獲取它,WHERE子句告訴我們我們得到了哪些。
JOIN是關于表的聲明,它們如何綁定在一起(概念上,實際上,綁定到單個表中)。任何控制表的查詢元素 - 我們從中獲取東西 - 在語義上屬于FROM子句(當然,這是JOIN元素所在的位置)。將join-elements放入WHERE子句會將which和where-from混合在一起; 這就是JOIN語法首選的原因。
添加回答
舉報
0/150
提交
取消