[498]left join、inner join、right join的区别

sql的left join 、right join 、inner join之间的区别

  • left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
  • right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
  • inner join(等值连接) 只返回两个表中联结字段相等的行

t_user表
[498]left join、inner join、right join的区别_第1张图片
t_class表
[498]left join、inner join、right join的区别_第2张图片
sql语句:(左联结)

select u.UserID,u.UserName,c.id,c.name
from t_user u left join t_class c   on  c.id  = u.UserID

运行结果:
[498]left join、inner join、right join的区别_第3张图片
sql语句:(右联结)

select u.UserID,u.UserName,c.id,c.name
from t_user u RIGHT join t_class c
                    on  c.id  = u.UserID

运行结构:
 [498]left join、inner join、right join的区别_第4张图片
sql语句(自然联结):

select u.UserID,u.UserName,c.id,c.name
from t_user u inner join t_class c
                    on  c.id  = u.UserID

运行结果:
[498]left join、inner join、right join的区别_第5张图片

根据构建的虚拟表,更新相同的字段值

update dmdc.bond_issuser_rela_detail c inner join (SELECT DISTINCT a.com_uni_code,a.com_chi_name,b.com_uni_code as code2,b.com_chi_name as name2
    FROM dmdc.bond_issuser_rela_detail a
    LEFT JOIN dmdc.t_com_info b 
    ON a.com_chi_name=b.com_chi_name
    WHERE a.com_uni_code is NULL and b.com_uni_code is not NULL ORDER BY b.com_uni_code) d on d.com_chi_name=c.com_chi_name
set c.com_uni_code = d.code2

说明:select查询造的虚拟表当做查询源的时候, 这个select语句是完全独立的, 不和他以外的SQL相通

 update  表1  a1  inner join  (select 字段1,字段2 from 表1 where 条件) a2 on 条件
        set   a1.字段1 = a2.字段2 

先造出来一个虚拟表,然后通过更新虚拟表的方式去实现具体的更新;

来源:https://blog.csdn.net/qq_37938523/article/details/80872162
https://blog.csdn.net/qq_37709240/article/details/80049744

你可能感兴趣的:(数据库&中间件)