国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
left join后面加上where條件淺析

http://www.cnblogs.com/huahua035/p/5718469.html


select a.*,b.*from table1 aleft join table2 b on b.X=a.Xwhere XXX

如上:一旦使用了left join,沒(méi)有where條件時(shí),左表table1會(huì)顯示全部?jī)?nèi)容

    使用了where,只有滿足where條件的記錄才會(huì)顯示(左表顯示部分或者全部不顯示)

so。。。。

left join的困惑:一旦加上where條件,則顯示的結(jié)果等于inner join 

 

原因分析:

數(shù)據(jù)庫(kù)在通過(guò)連接兩張或多張表來(lái)返回記錄時(shí),都會(huì)生成一張中間的臨時(shí)表,然后再將這張臨時(shí)表返回給用戶;

where條件是在臨時(shí)表生成好后,再對(duì)臨時(shí)表進(jìn)行過(guò)濾的條件;

因此:where 條件加上,已經(jīng)沒(méi)有l(wèi)eft join的含義(必須返回左邊表的記錄)了,條件不為真的就全部過(guò)濾掉。 

 

解決方案:

1、where過(guò)濾結(jié)果作為子查詢,和主表left,如下:

select a.*,tmp.*from table1 aleft join(    select a.*,b.*    from table1 a    left join table2 b on b.X=a.X    where XXX)tmp

很明顯,子查詢語(yǔ)句無(wú)論 left join、inner join都沒(méi)啥區(qū)別了

2、查詢條件放在on后面

1
2
3
select a.*,b.*
from table1 a
left join table2 b on b.X=a.X and XXX

注意:where XXX去掉,改為鏈接條件on后面的 and XXX

分析:

 on條件是在生成臨時(shí)表時(shí)使用的條件,它不管on中的條件是否為真,都會(huì)返回左邊表中的記錄。

 

結(jié)論:


 

過(guò)濾條件放在:

where后面:是先連接然生成臨時(shí)查詢結(jié)果,然后再篩選

on后面:先根據(jù)條件過(guò)濾篩選,再連 生成臨時(shí)查詢結(jié)果

 


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
delete表1條件是另一個(gè)表中的數(shù)據(jù),多表連接刪除(轉(zhuǎn))
SQL Server: left join on 和 left join where區(qū)別(轉(zhuǎn))
mysql left( right ) join使用on 與where 篩選的差異
left join,right join,full join的一點(diǎn)總結(jié)
SQL左右連接中的on and和on where的區(qū)別
SQL中on條件與where條件的區(qū)別 (having)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服