INNER JOIN 与 LEFT JOIN 之间的区别

一、JOIN ON的作用
        ON是在 联接 时就进行条件过滤,而 WHERE则是在 联接后才过滤。
        SELECT a.*,b.*
           FROM a
     LEFT JOIN b
                  ON a.a_zw = b.b_zw           --联接时,对数据表进行条件过滤,将左表的所有行、右表的符合条件的行,插入到临时表(不可见)
         WHERE a.a_name = b.b_name  --对生成的临时表进行条件过滤,只输出符合条件的行给用户(可见)
         JOIN ON和WHERE的本质区别
        ON:生成临时表时使用的条件,过滤数据表的内容,无论ON的条件是否为真,都将LEFT左表或RIGHT右表的行放到临时表;
        WHERE:临时表已生成之后对临时表进行过滤的条件,条件部位真的就全部过滤掉。
        总结:
ON是对数据表进行过滤,无论条件成立否,都返回表的行给结果集;WHERE对结果集进行过滤,返回结果集中符合条件的行。

二、LEFT JOIN(左联接) 
        返回:左表的所有行,以及右表中符合连接条件的行。
        SELECT *                           -- 输出范围
           FROM a                           -- 要查询的主表(左表)
   LEFT  JOIN b                           -- 要连接的表(右表)
                ON a.a_zw = b.b_zw  -- 连接条件(右表的输出范围)
        说明: LEFT JOIN 以a(左表)为基础,a(左表)的记录将会全部输出,b(右表)只会输出符合条件的行,b(右表)行不足的地方均为NULL

三、RIGHT JOIN(右联接)
        返回:右表的所有行,以及左表中符合条件的行。
        SELECT *                           -- 输出范围
           FROM a
                           -- 要查询的主表(左表)
 RIGHT JOIN b                           -- 要连接的表(右表)
                ON a.a_zw = b.b_zw  -- 连接条件(左表的输出范围)
        说明: LEFT JOIN 相反,RIGHT JOIN以b(右表)为基础,a(左表)不足的地方用NULL填充。

INNER JOIN(等值连接)
        返回:两个表中联结字段相等的行。
       SELECT *                            -- 输出范围
          FROM a
                           -- 要查询的主表(左表)
INNER JOIN  b                           -- 要连接的表(右表)
               ON  a.a_zw = b.b_zw  -- 连接条件
        说明: INNER JOIN 不以哪个表基础,它只输出符合条件的记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值