SQL Practice - Sep. 1,18

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);

推薦閱讀:

TAG:SQL | SQL語句 | 科技 |