table name: mysample.
table columns: id - PK, names - pk, age.
里面的例子:
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文件并进行了这些更改。
inside修改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查询以使用相同的主键替换行?
答案 0 :(得分:1)
您可以尝试将新数据加载到临时表中。然后使用以下查询更新您的表:
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);