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朋友有帮助。

相关文章
相关标签/搜索