描述
将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005,其他数据保持不变,使用replace实现,直接使用update会报错。
CREATE TABLE titles_test ( id int(11) not null primary key, emp_no int(11) NOT NULL, title varchar(50) NOT NULL, from_date date NOT NULL, to_date date DEFAULT NULL); insert into titles_test values ('1', '10001', 'Senior Engineer', '1986-06-26', '9999-01-01'), ('2', '10002', 'Staff', '1996-08-03', '9999-01-01'), ('3', '10003', 'Senior Engineer', '1995-12-03', '9999-01-01'), ('4', '10004', 'Senior Engineer', '1995-12-03', '9999-01-01'), ('5', '10001', 'Senior Engineer', '1986-06-26', '9999-01-01'), ('6', '10002', 'Staff', '1996-08-03', '9999-01-01'), ('7', '10003', 'Senior Engineer', '1995-12-03', '9999-01-01');
后台会执行下面SQL语句得到结果,对比输出:
select * from titles_test where id=5;
/*
题目:SQL44 将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005
*/
-- 方法一:使用replace
update table titles_test
set
emp_no = replace(emp_no,10001,10005)
where id=5
;
-- 方法二:使用insert
insert into titles_test
values(5,10005,'Senior Engineer', '1986-06-26', '9999-01-01')
on duplicate key update emp_no = 10005
-- 方法三: 使用replace into
replace into titles_test
values(5, 10005 ,'Senior Engineer', '1986-06-26', '9999-01-01')