亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

INNER JOIN ON vs WHERE子句

INNER JOIN ON vs WHERE子句

斯蒂芬大帝 2019-05-24 16:22:18
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中控制它。


查看完整回答
反對 回復 2019-05-24
?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

其他人指出,INNER JOIN有助于人類的可讀性,這是首要任務; 我同意。讓我試著解釋為什么連接語法更具可讀性。

一個基本的SELECT查詢是這樣的:

SELECT stuff
FROM tables
WHERE conditions

SELECT子句告訴我們什么,我們正在找回; FROM子句告訴我們從哪里獲取它,WHERE子句告訴我們我們得到了哪些。

JOIN是關于表的聲明,它們如何綁定在一起(概念上,實際上,綁定到單個表中)。任何控制表的查詢元素 - 我們從中獲取東西 - 在語義上屬于FROM子句(當然,這是JOIN元素所在的位置)。將join-elements放入WHERE子句會將whichwhere-from混合在一起; 這就是JOIN語法首選的原因。


查看完整回答
反對 回復 2019-05-24
  • 4 回答
  • 0 關注
  • 1824 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號