MySQL - Delete Join

MySQL - Delete Join 首页 / MySQL入门教程 / MySQL - Delete Join

DELETE查询是数据操作语言的一部分,用于从表中删除行。在本节中,无涯教程将描述如何在DELETE查询中使用INNER JOIN或LEFT JOIN从多个表中删除记录。

INNER JOIN删除联接

内部联接查询可以与删除查询一起使用,以从满足指定条件的一个表中删除行,并从另一表中删除匹配行。

以下是可使用内部联接从多个表中删除行的语法。

DELETE target table 
FROM    table1  
INNER JOIN table2
ON table1.joining_column= table2.joining_column
WHERE   condition

在这里,目标是一个表名,无涯教程要通过匹配指定条件从中删除行。假设您要从表 T1 T2 中删除行,其中 student_id = 2 ,那么可以将其写以下语句:

DELETE T1, T2  
FROM    T1  
INNER JOIN T2  
ON T1.student_id=T2.student.id  
WHERE   T1.student_id=2;

在以上语法中,目标表(T1和T2)写在DELETE和FROM关键字之间。如果无涯教程从那里省略任何表名,那么 delete语句只会从单个表中删除行。用 ON 关键字编写的表达式是与要删除的表中的行匹配的条件。

假设有两个表studentscontacts,其中包含以下数据:

表:students

MySQL DELETE JOIN

表:contacts

MySQL DELETE JOIN

执行以下查询以了解使用内部联接删除联接。该语句删除两个表中具有相同ID的行。

DELETE students, contacts FROM students
INNER JOIN contacts ON students.student_id=contacts.college_id 
WHERE students.student_id = 4;

成功执行后,它将给出以下消息:

链接:https://www.learnfk.comhttps://www.learnfk.com/mysql/mysql-delete-join.html

来源:LearnFk无涯教程网

MySQL DELETE JOIN

现在,运行以下查询以验证成功删除的行。

mysql> SELECT * FROM students;
mysql> SELECT * FROM contacts;

您可以看到 student_id = 4 所在的行已删除。

MySQL DELETE JOINMySQL DELETE JOIN

LEFT JOIN 删除联接

无涯教程已经通过 SELECT语句学习了LEFT JOIN子句,该子句返回左(第一个)表中的所有行以及另一个表中匹配或不匹配的行。类似地,还可以将LEFT JOIN子句与DELETE关键字一起使用,以从左表中删除行,而该表中没有与右表中的行匹配的行。

以下查询更清楚地说明了DELETE语句使用LEFT JOIN从 Table1 中删除在 Table2 中没有匹配行的行的情况:

DELETE Table1 FROM Table1
LEFT JOIN Table2 ON Table1.key = Table2.key 
WHERE Table2.key IS NULL;

在上面的查询中,请注意,无涯教程将仅将Table1与DELETE关键字一起使用,而不是像在INNER JOIN语句中一样。

示例

在包含以下数据的数据库中创建表"contacts"和" customers":

表:contacts

MySQL DELETE JOIN

表:customers

MySQL DELETE JOIN

执行以下语句,删除没有手机(cellphone)号码的客户:

DELETE customers FROM customers
LEFT JOIN contacts ON customers.customer_id = contacts.contact_id 
WHERE cellphone IS NULL;

成功执行后,它将给出以下消息:

链接:https://www.learnfk.comhttps://www.learnfk.com/mysql/mysql-delete-join.html

来源:LearnFk无涯教程网

MySQL DELETE JOIN

现在,运行以下查询以验证成功删除的行。

mysql> SELECT * FROM customers;

您可以看到删除了客户没有手机号的行。

MySQL DELETE JOIN

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

深入拆解Tomcat & Jetty -〔李号双〕

网络编程实战 -〔盛延敏〕

性能测试实战30讲 -〔高楼〕

Kafka核心源码解读 -〔胡夕〕

张汉东的Rust实战课 -〔张汉东〕

小马哥讲Spring AOP编程思想 -〔小马哥〕

说透数字化转型 -〔付晓岩〕

李智慧 · 高并发架构实战课 -〔李智慧〕

现代React Web开发实战 -〔宋一玮〕

好记忆不如烂笔头。留下您的足迹吧 :)