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

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

SQLJOIN:使用、打開或在何處有區(qū)別嗎?

SQLJOIN:使用、打開或在何處有區(qū)別嗎?

幕布斯6054654 2019-06-15 10:44:18
SQLJOIN:使用、打開或在何處有區(qū)別嗎?我想知道SQL對這些JOIN語句的執(zhí)行方式是否有任何不同:SELECT * FROM a,b WHERE a.ID = b.IDSELECT * FROM a JOIN b ON a.ID = b.IDSELECT * FROM a JOIN b USING(ID)有表演上的差別嗎?還是算法上的差異?還是只是語法糖?
查看完整描述

3 回答

?
米琪卡哇伊

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個贊

在表現(xiàn)上沒有差別。

然而,第一種款式是ANSI-89,在一些商店會讓你的腿斷。包括我的。第二種風(fēng)格是ANSI-92,而且更加清晰。

例子:

哪一個是連接,哪個是過濾器?

FROM T1,T2,T3....WHERE T1.ID = T2.ID AND
     T1.foo = 'bar' AND T2.fish = 42 AND
     T1.ID = T3.IDFROM T1 
   INNER JOIN T2 ON T1.ID = T2.ID   INNER JOIN T3 ON T1.ID = T3.IDWHERE
   T1.foo = 'bar' AND T2.fish = 42

如果你有外部連接(=**=)那么第二種款式就會像廣告中所說的那樣起作用。在SQLServer 2005+中,最有可能不推薦的也是不推薦的

ANSI-92風(fēng)格也很難使用。如果你錯過了一個條件,用舊的風(fēng)格,你很容易得到笛卡兒的產(chǎn)品(交叉連接)。ANSI-92會出現(xiàn)語法錯誤。

編輯:更多的澄清

  • 不使用“JointheWHERE”(隱式)的原因是外部聯(lián)接的錯誤結(jié)果。
  • 如果您使用顯式外部聯(lián)接+隱式內(nèi)部連接,則仍然會得到不可靠的結(jié)果+您的用法不一致

不僅僅是句法:這是關(guān)于擁有一個語義正確查詢

SQLServer邏輯查詢處理順序是從,開始,加入,在那里.

因此,如果將“內(nèi)連接的隱式”和“外連接的顯式”混合使用,則很可能不會得到預(yù)期的結(jié)果,因?yàn)椴樵兪遣幻鞔_的.


查看完整回答
反對 回復(fù) 2019-06-15
?
萬千封印

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個贊

我鄙視你通過使用WHERE..只是在我看來不對,一個骯臟的黑客。正確的ANSI連接用于:

SELECT 
    p.Product,
    o.OrderFROM 
    Product pINNER JOIN
    Order oON
    o.OrderID = p.OrderID

更喜歡使用ON加入的時候WHERE過濾結(jié)果。記住,除了按要過濾結(jié)果的位置進(jìn)行分組和排序之外,您將使用的最后一件東西是在哪里。因此,您不應(yīng)該使用WHERE因?yàn)樗茈y讀懂。

SELECT 
    p.Product,
    o.OrderFROM 
    Product pINNER JOIN
    Order oON
    o.OrderID = p.OrderIDWHERE
    o.Category = 'IT'

最后,您(開發(fā)人員)可能不會在未來出現(xiàn),因此可讀性和可維護(hù)性將幫助必須接管代碼的傾注靈魂:)。

當(dāng)我看到開發(fā)人員使用WHERE要加入他們的表,這通常表明他們不了解足夠的T-SQL。這是我個人的看法。


查看完整回答
反對 回復(fù) 2019-06-15
  • 3 回答
  • 0 關(guān)注
  • 499 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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