Mysql 简明教程
MySQL - Update Join
若要使用 MySQL 更新单个数据库表中输入的数据,可以使用 UPDATE
语句。但是,若要更新多个数据库表中的数据,我们可以使用 UPDATE… JOIN
语句。
MySQL UPDATE… JOIN
通常,MySQL 中的 ` JOINS ` 用来提取来自多张表的行的组合,相对于匹配字段。并且,由于 ` UPDATE ` 语句仅修改单个表中的数据,所以我们使用 JOIN 将多张表组合到一张表中,然后更新它们。这也称为跨表修改。
Syntax
以下是 UPDATE… JOIN
语句的基本语法:
UPDATE table(s)
SET column1 = value1, column2 = value2, ...
FROM table1
JOIN table2 ON column3 = column4;
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 );
CUSTOMERS 表将创建为 −
让我们创建另一个名为 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);
ORDERS 表显示如下:
使用以下 ` UPDATE… JOIN ` 查询交叉修改多张表 (CUSTOMERS 和 ORDERS):
UPDATE CUSTOMERS
JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
SET CUSTOMERS.SALARY = CUSTOMERS.SALARY + 1000;
UPDATE… JOIN with WHERE Clause
UPDATE… JOIN
查询中的 ON
子句用于对要更新的记录应用约束。此外,我们还可以使用 WHERE
子句使约束更严格。其语法如下:
UPDATE table(s)
SET column1 = value1, column2 = value2, ...
FROM table1
JOIN table2 ON column3 = column4
WHERE condition;