mysql支持跨表delete删除多表记录

时间:2024-01-27 06:12:29 

前几天写了Mysql跨表更新的一篇总结,今天我们看下跨表删除。
在Mysql4.0之后,mysql开始支持跨表delete。
Mysql可以在一个sql语句中同时删除多表记录,也可以根据多个表之间的关系来删除某一个表中的记录。
假定我们有两张表:Product表和ProductPrice表。前者存在Product的基本信息,后者存在Product的价格。
第一种跨表删除的方式是不用join,在delete时指定用半角逗号分隔多个表来删除,如下sql语句:


DELETE p.*, pp.*
FROM product p, productPrice pp
WHERE p.productId = pp.productId
AND p.created < '2004-01-01'


第二种跨表删除的方式是使用inner join在join中指定两表之间的关联关系,如下sql语句:


DELETE p.*, pp.*
FROM product p
INNER JOIN productPrice pp
ON p.productId = pp.productId
WHERE p.created < '2004-01-01'


注意:跨表删除不必删除所有表的数据,上面的sql语句表会同时删除Product和ProductPrice两张表中的数据,但是你可以指定 DELETE product.*从而只删除product表中的记录,而不处理ProductPrice表中的记录。

跨表删除也可以使用left join,例如我们要删除所有在ProductPrice表中没有记录的Product表记录。如下sql语句:


DELETE p.*
FROM product p
LEFT JOIN productPrice pp
ON p.productId = pp.productId
WHERE pp.productId is null


跨表删除很有用,在需要的时候就用它吧。欢迎阅读另外一篇关于跨表更新的介绍文章

标签:跨表删除,跨表delete,删除多表
0
投稿

猜你喜欢

  • 小程序实现授权登陆的解决方案

    2024-04-17 10:03:28
  • K8ssandra入门教程之Linux上部署K8ssandra到Kubernetes的过程

    2022-04-02 03:12:59
  • Python Unittest ddt数据驱动的实现

    2023-10-29 14:54:14
  • JavaScript 实现 Konami Code

    2009-05-26 12:44:00
  • Django框架模型简单介绍与使用分析

    2021-04-06 02:59:19
  • pip安装python库时报Failed building wheel for xxx错误的解决方法

    2021-12-12 04:55:53
  • Linux下rpm方式安装mysql教程

    2024-01-21 07:40:53
  • 深入分析python中整型不会溢出问题

    2022-11-20 01:19:13
  • Go语言sort包函数使用示例

    2023-10-15 03:29:59
  • Python Sleep休眠函数使用简单实例

    2021-12-20 17:05:50
  • Pytorch如何切换 cpu和gpu的使用详解

    2023-08-22 03:30:11
  • Go语言标准输入输出库的基本使用教程

    2023-08-25 19:44:11
  • Pandas 类型转换astype()的实现

    2022-03-13 17:39:52
  • python实现C4.5决策树算法

    2021-10-05 19:35:29
  • Javascript实现单选框效果

    2024-04-23 09:06:42
  • css网页下拉菜单制作方法(2):初步实现

    2007-02-03 11:39:00
  • AJAX应用之草稿自动保存

    2007-08-23 08:29:00
  • 存储过程的输出参数,返回值与结果集

    2024-01-17 21:44:30
  • JS中判断null、undefined与NaN的方法

    2024-04-19 09:54:05
  • asp ajax跨域提交数据

    2011-04-11 10:56:00
  • asp之家 网络编程 m.aspxhome.com