--1, 放Join里面
SELECT a.*, b.StorerCode AS ParentStorerCode
FROM #tmpINV a
LEFT JOIN Wms_Bas_Storer b
ON b.CompanyID = @CompanyID
AND b.StockID = @StockID
AND a.ParentStorerID = b.StorerID
--2, 放Where里面
SELECT a.*, b.StorerCode AS ParentStorerCode
FROM #tmpINV a LEFT JOIN Wms_Bas_Storer b ON a.ParentStorerID = b.StorerID
WHERE b.CompanyID = @CompanyID
AND b.StockID = @StockID
第二种写法准确来说是有语病的
将本应该放在外连接里面的条件放到Where里面会导致外连接变成了内连接
如第二种写法得出的结果将跟下面的语句一样
--2.2, 放Where里面就变成了Inner Join
SELECT a.*, b.StorerCode AS ParentStorerCode
FROM #tmpINV a
Inner JOIN Wms_Bas_Storer b
ON b.CompanyID = @CompanyID
AND b.StockID = @StockID
AND a.ParentStorerID = b.StorerID
分享到:
相关推荐
left_join_on_and与left_join_on_where的区别
本文简单描述了sql语句join中on和where的区别以及其原理
left join 过滤条件写在on后面和写在where 后面的区别
Join on/inner join on/full join on/full outer join on/left join on/right join on/cross join on; 在使用jion时,on和where条件的区别;
LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。这篇文章主要介绍了sql中的left join以及on、where关键字的区别,需要的朋友可以参考下
inner join、 left join 、right join、 outer join之间的区别
本篇文章是对Oracle的left join中on和where的区别进行了详细的分析介绍,需要的朋友参考下
left join right join inner join 区别和联系
优先级 ...在left join下,两者的区别: on是在生成临时表的时候使用的条件,不管on的条件是否起到作用,都会返回左表 (table_name1) 的行。 where则是在生成临时表之后使用的条件,此时已经不管是否使
1、 on条件是在成临时表时使的条件,它不管on中的条件是否为真,都 2、where条件是在临时表成好后,再对临时表进过滤的条件 1、中间表 2、再对中间表过滤
主要介绍了mysql中left join设置条件在on与where时的用法区别,结合实例形式分析了mysql中left join设置条件在on与where时的相关用法区别与操作注意事项,需要的朋友可以参考下
有这样的一个问题mysql查询使用mysql中left(right)join筛选条件在on与where查询出的数据是否有差异。可能只看着两个关键字看不出任何的问题。那我们使用实际的例子来说到底有没有差异。例如存在两张表结构表结构1...
ON 子句与 WHERE 子句的不同 一种更好地理解带有 WHERE … IS NULL 子句的复杂匹配条件的简单方法 Matching-Conditions 与 Where-conditions 的不同 关于 “A LEFT JOIN B ON 条件表达式” 的一点提醒 ON 条件(...
问题是常规的写法,将 day >= xxx 条件放到 where 中, 如果某些数据近一周没有访问量,那么这条数据就查不出来。解决办法呢,就是将条件放到 LEFT JOIN 中。 MySQL 语句执行顺序 首先先说明一个概念,MySQL 语句...
SQL中的left outer join,inner join,right outer join用法详解
CountDownLatch与thread.join()的区别