SQL Practice - Sep. 1,18
題目:將id=5以及emp_no=10001的行數據替換成id=5以及emp_no=10005
將id=5以及emp_no=10001的行數據替換成id=5以及emp_no=10005,其他數據保持不變,使用replace實現。
CREATE TABLE IF NOT EXISTS 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);
我的答案:
update titles_testset emp_no = REPLACE(emp_no, 10001, 10005)where id = 5;
其他解法:
全欄位更新替換。由於 REPLACE 的新記錄中 id=5,與表中的主鍵 id=5 衝突,故會替換掉表中 id=5 的記錄,否則會插入一條新記錄(例如新插入的記錄 id = 10)。並且要將所有欄位的值寫出,否則將置為空。
REPLACE INTO titles_test VALUES (5, 10005, Senior Engineer, 1986-06-26, 9999-01-01);
推薦閱讀: