[英]replace row if the same primary key
table name: mysample.
table columns: id - PK, names - pk, age.
在mysample內部:
id names age
1 Nicole 19
2 Sam 20
3 Mark 15
我正在使用MySQL Workbench。
這是我使用此查詢后的結果:
load data local infile 'C:/Users/mysample.csv' into table mysample fields terminated by ','
enclosed by '"'
lines terminated by '\n'
ignore 1 lines
(names, age)
這會將csv文件加載到數據庫中。 我修改了csv文件並進行了這些更改。
里面修改csv文件:
names age
Nicole 20
Sam 15
Mark 13
May 10
我要實現的是將對Nicole,Sam和Mark行進行更新,因此沒有相似的名稱。 這就是為什么我將名稱作為主鍵。 我搜索並找到了REPLACE查詢語法。
load data local infile 'C:/Users/mysample.csv' replace into table mysample fields
terminated by ','
enclosed by '"'
lines terminated by '\n'
ignore 1 lines
(names, age)
但是我在數據庫中得到了這些結果:
id names age
1 Nicole 19
2 Sam 20
3 Mark 15
4 Nicole 20
5 Sam 15
6 Mark 13
7 May 10
如何指定REPLACE查詢以用相同的主鍵替換行?
您可以嘗試將新數據加載到臨時表中。 然后使用以下查詢更新您的表:
update mysample a set
age = (select t.age from temp_table t where t.names = a.names);
之后,如果您需要使用names
的新值插入新行,則可以執行:
insert into mysample
select * from temp_table t where t.names not in (select names from mysample);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.