mysql delete 跨表_MySql 跨表删除与更新-阿里云开发者社区

一、跨表删除

根据多个关联表删除表中的记录,SQL语句如下:

方式一:

DELETE t1.*, t2.*

FROM 表一 t1, 表二 t2

WHERE t1.表一ID = t2.表二ID(注:该ID与表一的ID关联,表一ID为外键)

AND t1.DATE(举例以日期为条件) < '2016-11-11'

注:以上语句将删除表一、表二选定条件的记录

方式二:

DELETE t1.*, t2.*

FROM 表一 t1

INNER JOIN  表二 t2

ON t1.表一ID = t2.表二ID(注:该ID与表一的ID关联,表一ID为外键)

WHERE  t1.DATE(举例以日期为条件) < '2016-11-11'

注:以上语句将删除表一、表二选定条件的记录

(以上两种方式将删除表一、表二两张表相关的记录,如果你只想删除一张表的记录,如果你只需删除一张表中的记录你只需指定 DELETE 表一.*这样就只删除表一中的记录)

跨表删除也可以使用left join,SQL如下:

DELETE t1.*

FROM 表一 t1

LEFT JOIN 表二 t2

ON t1.ID = t2.ID

WHERE t2.TYPE is null

二、跨表更新

根据多个关联表更新表中的记录,SQL语句如下:

方式一:

UPDATE 表一 t1, 表二 t2

SET t1.price = t2.price+10

WHERE t1.ID = t2.ID

AND p.date < '2016-11-11'

方式二:

UPDATE  表一 t1

INNER JOIN 表二 t2

ON t1.ID = t2.ID

SET t1.price = t2.price+10

WHERE p.date < '2016-11-11'

方式三:

(使用left outer join来做多表update,比方说如果表二中没有产品价格记录的话,将表一的isDeleted字段置为1)

UPDATE 表一 t1

LEFT JOIN 表二 t2

ON t1.ID = t2.ID

SET t1.deleted = 1

WHERE t2.IDIS null

以上例子都是两张表之间做关联,但是只更新一张表中的记录,其实是可以同时更新两张表的,如下sql:

UPDATE 表一 t1

INNER JOIN 表二 t2

ON t1.ID = t2.ID

SET t2.price = t2.price +10,

p.更新时间= CURDATE()

WHERE p.创建时间 < '2016-11-11'

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值