Mysql 简明教程
MySQL - Delete Join
MySQL 中的简单删除操作可以在表的单个项或多个项上执行。但是,如果此删除操作要对多个表的多个项执行怎么办?这是 Joins 的用处所在。
MySQL DELETE… JOIN
正如我们在本教程中之前讨论的,联接用于通过基于通用字段组合这些表的列从两个或更多个表中检索记录。此合并的数据可以删除,并且所有更改都会反映在原始表中。
Syntax
以下是 MySQL 中 DELETE… JOIN 语句的基本语法:
DELETE table(s)
FROM table1 JOIN table2
ON table1.common_field = table2.common_field;
我们可以在执行删除时使用任何联接子句(INNER JOIN、LEFT JOIN、RIGHT JOIN 等)。
Example
在这个例子中, 我们首先创建了一个名为 CUSTOMERS 的表格, 其中包含客户的个人详细信息, 包括他们的姓名、年龄、地址和薪水等。
CREATE TABLE CUSTOMERS (
ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25),
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID)
);
现在使用 INSERT 语句向该表中插入值,如下所示:
INSERT INTO CUSTOMERS VALUES
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00),
(2, 'Khilan', 25, 'Delhi', 1500.00),
(3, 'Kaushik', 23, 'Kota', 2000.00),
(4, 'Chaitali', 25, 'Mumbai', 6500.00),
(5, 'Hardik', 27, 'Bhopal', 8500.00),
(6, 'Komal', 22, 'Hyderabad', 4500.00),
(7, 'Muffy', 24, 'Indore', 10000.00);
该表将被创建为:
让我们创建另一个名为 ORDERS 的表,其中包含所做的订单和下单日期的详细信息。
CREATE TABLE ORDERS (
OID INT NOT NULL,
DATE VARCHAR (20) NOT NULL,
CUSTOMER_ID INT NOT NULL,
AMOUNT DECIMAL (18, 2),
);
使用 INSERT 语句像下面这样向该表中插入值:
INSERT INTO ORDERS VALUES
(102, '2009-10-08 00:00:00', 3, 3000.00),
(100, '2009-10-08 00:00:00', 3, 1500.00),
(101, '2009-11-20 00:00:00', 2, 1560.00),
(103, '2008-05-20 00:00:00', 4, 2060.00);
该表显示如下:
通过对这些表格应用 DELETE… JOIN 查询来执行删除操作。
DELETE a
FROM CUSTOMERS AS a INNER JOIN ORDERS AS b
ON a.ID = b.CUSTOMER_ID;