第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在聯(lián)接或位置內(nèi)的條件

在聯(lián)接或位置內(nèi)的條件

在聯(lián)接或位置內(nèi)的條件有什么不同(表現(xiàn)、最佳實(shí)踐等.)在JOIN子句中添加條件與WHERE子句之間?例如.。-- Condition in JOINSELECT *FROM dbo.Customers AS CUSINNER JOIN dbo.Orders AS ORD  ON CUS.CustomerID = ORD.CustomerIDAND CUS.FirstName = 'John'-- Condition in WHERESELECT *FROM  dbo.Customers AS CUSINNER JOIN dbo.Orders AS ORD  ON CUS.CustomerID = ORD.CustomerIDWHERE CUS.FirstName = 'John'你喜歡哪一個(gè)(也許是為什么)?
查看完整描述

3 回答

?
蕪湖不蕪

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊

對(duì)于內(nèi)部連接,我并沒有真正注意到它們之間的區(qū)別(但是與所有性能調(diào)優(yōu)一樣,您需要在您的條件下對(duì)照數(shù)據(jù)庫進(jìn)行檢查)。

然而,如果您使用的是左或右聯(lián)接,則條件會(huì)產(chǎn)生巨大的不同。例如,考慮以下兩個(gè)查詢:

SELECT *FROM dbo.Customers AS CUS 
LEFT JOIN dbo.Orders AS ORD 
ON CUS.CustomerID = ORD.CustomerIDWHERE ORD.OrderDate >'20090515'SELECT *FROM dbo.Customers AS CUS 
LEFT JOIN dbo.Orders AS ORD 
ON CUS.CustomerID = ORD.CustomerIDAND ORD.OrderDate >'20090515'

第一個(gè)將只給出那些日期晚于2009年5月15日的訂單記錄,從而將左連接轉(zhuǎn)換為內(nèi)部連接。第二個(gè)會(huì)給出這些記錄,再加上沒有訂單的任何客戶。結(jié)果集非常不同,取決于您放置條件的位置。(如果僅選擇*,則不應(yīng)在生產(chǎn)代碼中使用。)這種情況的例外情況是,您只希望在一個(gè)表中看到記錄,而不希望看到另一個(gè)表中的記錄。然后,對(duì)條件使用WHERE子句,而不是JOIN。

SELECT *FROM dbo.Customers AS CUS 
LEFT JOIN dbo.Orders AS ORD 
ON CUS.CustomerID = ORD.CustomerIDWHERE ORD.OrderID is null


查看完整回答
反對(duì) 回復(fù) 2019-07-15
?
楊__羊羊

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊

大多數(shù)RDBMS產(chǎn)品將對(duì)這兩個(gè)查詢進(jìn)行相同的優(yōu)化。在PeterGulutzan和TrudyPelzer的“SQL性能調(diào)優(yōu)”中,他們測(cè)試了多個(gè)品牌的RDBMS,發(fā)現(xiàn)性能沒有差別。

我更喜歡將聯(lián)接條件與查詢限制條件分開。

如果你用OUTER JOIN有時(shí),在JOIN子句中添加條件是必要的。


查看完整回答
反對(duì) 回復(fù) 2019-07-15
  • 3 回答
  • 0 關(guān)注
  • 745 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)