UPDATE table_name
SET col1 = expr1,
col2 = expr2,
...
[WHERE conditions]
[ORDER BY ...]
[LIMIT row_count];
UPDATE emp_devp
SET salary = salary * 1.1,
bonus = 2000
WHERE emp_name = '关平';
SELECT emp_name, salary, bonus
FROM emp_devp
WHERE emp_name = '关平';
emp_name|salary |bonus |
--------|-------|-------|
关平 |7480.00|2000.00|
mysql> UPDATE IGNORE employee
-> SET dept_id = 10
-> WHERE emp_id = 1;
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`hrdb`.`employee`, CONSTRAINT `fk_emp_dept` FOREIGN KEY (`dept_id`) REFERENCES `department` (`dept_id`))
mysql> UPDATE IGNORE employee
-> SET dept_id = 10
-> WHERE emp_id = 1;
Query OK, 0 rows affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 1
mysql> show warnings;
+---------+------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Warning | 1452 | Cannot add or update a child row: a foreign key constraint fails (`hrdb`.`employee`, CONSTRAINT `fk_emp_dept` FOREIGN KEY (`dept_id`) REFERENCES `department` (`dept_id`)) |
+---------+------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
DROP TABLE IF EXISTS t;
CREATE TABLE t(id int NOT NULL PRIMARY KEY);
INSERT INTO t VALUES (1),(2),(3);
UPDATE t
SET id = id + 1;
ERROR 1062 (23000): Duplicate entry '2' for key 't.PRIMARY'
UPDATE t
SET id = id + 1
ORDER BY id DESC;
SELECT * FROM t;
id|
--|
2|
3|
4|
UPDATE t1 SET col1 = col1 + 1, col2 = col1;
UPDATE table_name t
[INNER JOIN | LEFT JOIN] other_table ON conditions
SET t.col1 = expr1,
t.col2 = expr2
WHERE conditions
[ORDER BY ...]
[LIMIT row_count];
UPDATE emp_devp ed
JOIN employee d ON (d.emp_id = ed.emp_id)
SET ed.salary = d.salary;
UPDATE emp_devp ed
SET salary = (SELECT e.salary
FROM employee e
WHERE e.emp_id = ed.emp_id);
UPDATE emp_devp ed
JOIN employee e ON (ed.emp_id = e.emp_id)
SET ed.salary = e.salary,
e.bonus = 0;
原文作者:SQL编程思想;如有侵权,请联系管理员删除。