mysql update 连表举例详讲

和select 一样 update连表查询也有 inner 内联更新,left 左,right 右:

举例:


1.创建两个表,并填上数据

CREATE TABLE `student` (
     `id` bigint(20) NOT NULL,
     `class_id` bigint(20) ,
      `class_name` VARCHAR(10),
       `student_name`      VARCHAR(10)    
) ;

student

CREATE TABLE `class` (
       `id` bigint(20) NOT NULL,
       `class_name` VARCHAR(10)
        `student_name`      VARCHAR(10)
) ;
class


2.执行不同连表更新

# inner-更新双方对应的
update   student a
INNER JOIN class b
on a.class_id = b.id
set a.class_name ='111',
b.student_name ='222'

inner1inner2


# left-更新全左表 与 对应右表
update   student a
left JOIN class b
on a.class_id = b.id
set a.class_name ='111',
b.student_name ='222'

left1left2


# right-更新全右表 与 对应左表
update   student a
right JOIN class b
on a.class_id = b.id
set a.class_name ='111',
b.student_name ='222'

right1right2


# 跟新右表中没有与左表对应的
update   student a
right JOIN class b
on a.class_id = b.id
set b.student_name ='222'
where a.class_id is  null;

q1q2


#inner连表对应更新(跟新相互对应的,其他不变)
update   student a
INNER JOIN class b
on a.class_id = b.id
set a.class_name = b.class_name,
b.student_name =a.student_name;

inner11inner22


#left连表对应更新( 跟新与右表对应的全左表数据,没有为null,跟新与左表对应的右表数据,没有不变) -- right 同理
update   student a
left JOIN class b
on a.class_id = b.id
set a.class_name = b.class_name,
b.student_name =a.student_name;

--原来:

or1or2

--执行后:

left1乐翻天2

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值