left join on and 和left join on where 的区别

Table1: temp1

temp1Id Size
1           10
2           20
3           30

Table2: temp2

temp2Id Size Name
1            10   AAA
2            20   BBB
3            20   CCC

select * from dbo.temp1
left join dbo.temp2 on temp1.Size=temp2.Size

temp1Id Size temp2Id Size Name
1 10 1 10 AAA
2 20 2 20 BBB
2 20 3 20 CCC
3 30 NULL NULL NULL

select * from dbo.temp1
left join dbo.temp2 on temp1.Size=temp2.Size
where temp2.Name=‘AAA‘

temp1Id Size temp2Id Size Name
1 10 1 10 AAA

select * from dbo.temp1
left join dbo.temp2 on temp1.Size=temp2.Size
and temp2.Name=‘AAA‘

temp1Id Size temp2Id Size Name
1 10 1 10 AAA
2 20 NULL NULL NULL
3 30 NULL NULL NULL

总结:

on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

时间: 2024-10-25 08:58:19

left join on and 和left join on where 的区别的相关文章

图解MYSQL JOIN ON,SQL JOIN 详解,数据库sql join语句

对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚.Coding Horror上有一篇文章(实在不清楚为什么Coding Horror也被墙)通过 文氏图 Venn diagrams 解释了SQL的Join.我觉得清楚易懂,转过来. 假设我们有两张表. Table A 是左边的表. Table B 是右边的表. 其各有四条记录,其中有两条记录是相同的,如下所示

数据库中的左连接(left join)和右连接(right join)区别

Left Join / Right Join /inner join相关 关于左连接和右连接总结性的一句话: 左连接where只影向右表,右连接where只影响左表. Left Join select * from tbl1 Left Join tbl2 where tbl1.ID = tbl2.ID 左连接后的检索结果是显示tbl1的所有数据和tbl2中满足where 条件的数据. 简言之 Left Join影响到的是右边的表 Right Join select * from tbl1 Rig

mysql多表查询方法(left join(左连接),right join (右连接),inner join (内连接)的区别)

表A记录如下:  aID aNum  1 a20050111  2 a20050112  3 a20050113  4 a20050114  5 a20050115  表B记录如下:  bID bName  1 2006032401  2 2006032402  3 2006032403  4 2006032404  8 2006032408  创建这两个表SQL语句如下:  CREATE TABLE a  aID int( 1 ) AUTO_INCREMENT PRIMARY KEY ,  a

“,”、“natural join”、“natural left outer join”、“natural right outer join”的用法总结

",":代表笛卡尔积: "natural join":代表自然连接,即同名列等值连接: "natural left outer join":表示左外连接: "natural right outer join":表示右外连接. 注意:以下的写法在Oracle中都是不正确的. 1.r1 join r2 2.r1 inner join r2 3.r1 left outer join r2(如果要用左外连接,需要加natural关键字

DB2数据库的外连接(OUTER JOIN),内连接(INNER JOIN)和交叉连接(CROSS JOIN)区别

1.交叉连接(CROSS JOIN):有两种,显式的和隐式的,不带ON子句,返回的是两表的乘积,也叫笛卡尔积,返回记录的个数应当是a和b表中符合记录的和. 显式:select [cols_list] from a cross join b where [condition] 隐式:select [cols_list] from a, b where [condition] 2.内连接(INNER JOIN):有两种,显式的和隐式的,返回连接表中符合连接条件和查询条件的数据行,和我们写普通的sql

Python join() 方法与os.path.join()的区别

Python join() 方法与os.path.join()的区别 1. 函数作用: join() :将序列.字符串 .元组等中的元素以指定的字符连接生成一个新的字符串.os.path.join() : 将多个路径组合后返回 2. join()方法说明: join()方法语法:str.join(sequence)参数说明:str:指定的字符,即分隔符sequence:需要连接的元素 #字符串序列 seq = ("apple", "banana", "pe

【Transact-SQL】SQL Server自动把left join自动转化为inner join、以及关联时的数据重复问题

原文:[Transact-SQL]SQL Server自动把left join自动转化为inner join.以及关联时的数据重复问题 1.SQL Server自动把left join自动转化为inner join的问题: 下面的两个语句都是left join的,但是一个却转化成了 inner join drop table a,B go create table a(id int) insert into a select 1 union all select 2 create table b

inner join(内连接)、left join(左连接)、right join(右连接)、full join(全连接)区别

sql中的连接查询有inner join(内连接).left join(左连接).right join(右连接).full join(全连接)四种方式,它们之间其实并没有太大区别,仅仅是查询出来的结果有所不同.例如我们有两张表: Orders表通过外键Id_P和Persons表进行关联. 1.inner join(内连接),在两张表进行连接查询时,只保留两张表中完全匹配的结果集. 我们使用inner join对两张表进行连接查询,sql如下: SELECT p.LastName, p.First

浅谈!SQL语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别

今天的工作学习之路是一个数据库的小知识,当时没有区分出所以然,特此记录分享一下子. 众所周知,数据库的表都是单独存在的,但是当我们进行联合查询(多表查询)时,我们获得数据库返回的值时就好像在一张表里一样,这是因为在进行联合查询时数据库会生成一个临时表返回给我们所想要的数据信息,这时我们都是通过LEFT JOIN 等语句进行相关联,并且我们也会为我们所想查询的数据进行一个筛选,这时我们就会用到过滤语句. LEFT JOIN ON WHERE:在临时表生成后,再对临时表的数据进行过滤,再返回左表.