您当前的位置: 首页 >  sql

衣舞晨风

暂无认证

  • 0浏览

    0关注

    1156博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

SQL语句Left join 中On和Where的用法区别

衣舞晨风 发布时间:2014-04-13 11:10:27 ,浏览量:0

原文地址:点击打开链接

SQL语句如下:

SELECT * 
FROM 表1  
LEFT JOIN 表2 ON 表1.id = 表2.id AND 表2.Name != 'ff'
WHERE 表1.NAME != 'aa' 

       步骤1:返回笛卡尔积(SELECT * FROM 表1 CROSS JOIN 表2)

  步骤2:应用ON筛选器(当前的条件为  表1.id = 表2.id AND 表2.Name != 'ff')

  步骤3:添加外部行

  这一步只对OUTER JOIN起作用,如果是LEFT JOIN会以左边的表为保留表,如果是RIGHT JOIN会以右边的表为保留表。所谓外部行是指,保留表中的行。即使第二步的ON过滤掉了一些行,在这一步,会根据保留表添加第二步过滤掉的行。当前的例子,不存在这种情况。

  步骤4:应用WHERE筛选器(当前是Name != ‘aa’)过滤前三步所生成虚拟表的数据。

总结:

        如果SQL用的是Left Join ,On后面的条件对Left的表没有作用,只对Right的表有过滤作用,Where语句可以对Left的表有过滤作用。

        如果SQL用的是Right Join ,On后面的条件对Right的表没有作用,只对Left的表有过滤作用,Where语句可以对Right的表有过滤作用。

关注
打赏
1647422595
查看更多评论
立即登录/注册

微信扫码登录

0.5334s