作為示例,我們在這里使用名為testdb的數據庫,並且在其中創建兩張一模一樣的表:
drop table if exists test_table_1;
create table test_table_1 (
name varchar(30) primary key,
age integer
);
drop table if exists test_table_2;
create table test_table_2 (
name varchar(30) primary key,
age integer
);
然后我們往兩張表里面插入一些數據,其中test_table_1中我們插入3組數據:
insert into test_table_1 (name, age) values ("劉德華", 57), ("周傑倫", 39), ("周潤發", 61);
但是我們發現除了這三個人以外,我還要新增兩個人,並且周潤發的年齡信息也填寫錯了,那么我暫時先把信息插入到test_table_2中:
insert into test_table_2 (name, age) values ("陳綺貞", 43), ("范曉萱", 41), ("周潤發", 63);
然后我們嘗試一下,通過以下replace into語句將test_table_2中的信息更新到test_table_1中:
replace into test_table_1 select * from test_table_2;
通過如下語句查看test_table_1的結果:
select * from test_table_1;
可以看到結果如下:
| name | age |
|---|---|
| 劉德華 | 57 |
| 周傑倫 | 39 |
| 周潤發 | 63 |
| 范曉萱 | 41 |
| 陳綺貞 | 43 |
我們往test_table_1中成功新增了兩位女歌手,同時也修改了周潤發的年齡。
可以看到,replace into語句會更具主鍵是否存在來決定是進行insert操作還是update操作,是一個非常有用的指令。
