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

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

兩種sql 寫法的區別,進來看看!

兩種sql 寫法的區別,進來看看!

躍然一笑 2018-12-07 00:08:40
1 SELECT test_A.Id,test_B.Name FROM test_A LEFT JOIN test_B ON test_B.AId = test_A.Id WHERE test_A.Id = 32 SELECT Id,(SELECT NAME FROM test_B WHERE test_A.Id = test_B.AId) Name FROM test_A WHERE test_A.Id = 3上面兩種寫法在聯表方式上有區別嗎? 還是兩種寫法一個意思?
查看完整描述

13 回答

?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

得出的結果應該是一樣的,但是第二種性能差些,相當于test_a有幾條數據都會去test_b表中查詢一次,有N條就會查詢N次。

查看完整回答
反對 回復 2019-01-07
?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

建議看一下執行計劃

查看完整回答
反對 回復 2019-01-07
?
大話西游666

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

一樣,但建議用上面left join的寫法

查看完整回答
反對 回復 2019-01-07
?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

感覺第二種寫法比較怪,不易讀;效率上也可能比第一種低,你可以執行試試。

查看完整回答
反對 回復 2019-01-07
?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

用 explain 測試一下性能!

查看完整回答
反對 回復 2019-01-07
?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

兩者效果是一樣的

聯表跟內聯查詢其實很多時候可以實現等同的效果

至于性能的話,這個只能自己測試才知道 有些時候聯表快 有些時候內聯快

?

但可讀性來說明顯left join(聯表)的可讀性好點

查看完整回答
反對 回復 2019-01-07
?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

第二種沒用過

查看完整回答
反對 回復 2019-01-07
?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

感覺第二種效果好一點兒。

查看完整回答
反對 回復 2019-01-07
?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

有區別 ,如果test_a 對應在test_b表中有兩條數據,第一種的結果就是兩條數據,第二種就報錯。性能上,數據量少,沒什么區別。

查看完整回答
反對 回復 2019-01-07
?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

數據量大呢

查看完整回答
反對 回復 2019-01-07
?
楊魅力

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

@koi:?數據量大的話 連接查詢性能優于子查詢。

查看完整回答
反對 回復 2019-01-07
?
LEATH

TA貢獻1936條經驗 獲得超7個贊

結果是一樣的,建議使用第一種寫法,第一種寫法即使數據庫中存在多條數據,他也能正常查詢,但第二種就會報錯!并且在性能上第一條比較好些

查看完整回答
反對 回復 2019-01-07
?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

第一個是聯合查詢,left join 以左邊的表?test_A為 主表,讓符合on條件的右邊表test_B 附加上來(總條數恒為左表test_A)

第二個是子查詢,就是把某個查詢條件或者查詢表用sql語句的返回結果代替。

個人建議使用聯合查詢。執行速度應該更快

查看完整回答
反對 回復 2019-01-07
  • 13 回答
  • 0 關注
  • 758 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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