sql多表查詢之一:Where 和 On的祕密

今天給你們轉載一篇 《sql多表查詢之一:Where 和 On的祕密》,對於還在SQL初級階段的朋友來講, sql多表查詢問題是一個比較有趣也容易出錯的技術。何時會用到sql多表查詢呢?是在兩張或兩張以上表單中經過某幾個字段進行互聯管理的時候,這就不得不說說sql多表查詢中Where 和 On的祕密。

在瞭解sql多表查詢中Where 和 On的祕密以前,讓咱們先來溫習一下鏈接基礎吧sql

語法呢?spa

    select * from @a Aa left join @b Bb on Aa.a=Bb.aorm

    select * from @a Aa right join @b Bb on Aa.a=Bb.aserver

    select * from @a Aa join @b Bb on Aa.a=Bb.ablog

徹底       select * from @a Aa full join @b Bb on Aa.a=Bb.aci

迪卡爾    select * from @a,@bget

是否是很簡單呢,接下來咱們來看sql多表查詢中Where On的祕密:)ast

你們想一想,依據下表class

下面語句出來的結果是什麼?基礎

 

select * from @a _a left join @b _b on _a.id=_b.id where _b.name=1

select * from @a _a left join @b _b on _a.id=_b.id and _b.name=1

 先想一想,再看結果吧^_*

sql多表查詢中Where On的祕密SQLserver 中的執行順序是: joinwhere

因此,當條件寫在where裏,結果以下:

 

件寫在on裏,結果以下:

Where On是否是頗有趣,你也試試吧!

 下一個

請說出下面語句各返回多少記錄

select * from @a a left join @b b on a.id=b.id where a.id=1

select * from @a a left join @b b on a.id=b.id and b.id=1

select * from @a a left join @b b on a.id=b.id and a.id=1

select * from @a a left join @b b on a.id=1

先想一想,再看答案:P

        select * from @a a left join @b b on a.id=b.id where a.id=1

 

        緣由是先執行鏈接條件,再執行where部分,因此只有1條記錄

 

        select * from @a a left join @b b on a.id=b.id and b.id=1

 

        緣由是知足a.id=b.id and a.id=1 條件的只有一條,left join是對沒有附和條件的加null處理,因此最後結果是3

 

        select * from @a a left join @b b on a.id=b.id and a.id=1

 

        緣由是知足a.id=b.id and a.id=1 條件的只有一條,left join是對沒有附和條件的加null處理,因此最後結果是3

 

        select * from @a a left join @b b on a.id=1

 

        緣由是在作完迪卡爾後,知足a.id=1 條件的有3,left join是對沒有附和條件的加null處理,因此最後結果是5

sql多表查詢之一:Where 和 On的祕密》給你們轉載的這篇文章是否是頗有用呢,但願對IT朋友有幫助。

相關文章
相關標籤/搜索