Mysql 如果主键相同,则替换行
在mysample中:Mysql 如果主键相同,则替换行,mysql,sql,csv,replace,load-data-infile,Mysql,Sql,Csv,Replace,Load Data Infile,在mysample中: table name: mysample. table columns: id - PK, names - pk, age. 我正在使用MySQL工作台 这是使用此查询后的结果: id names age 1 Nicole 19 2 Sam 20 3 Mark 15 这将把csv文件加载到数据库中。我修改了csv文件并做了这些更改 内部修改csv文件: load data loc
table name: mysample.
table columns: id - PK, names - pk, age.
我正在使用MySQL工作台
这是使用此查询后的结果:
id names age
1 Nicole 19
2 Sam 20
3 Mark 15
这将把csv文件加载到数据库中。我修改了csv文件并做了这些更改
内部修改csv文件:
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)
我想要实现的是,行Nicole、Sam和Mark将被更新,因此没有类似的名称。这就是为什么我把名字作为主键。我搜索并找到了REPLACE查询语法
names age
Nicole 20
Sam 15
Mark 13
May 10
但我在数据库中得到了这些结果:
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
之后,如果需要插入具有新值名称
的新行,则可以执行:
update mysample a set
age = (select t.age from temp_table t where t.names = a.names);
只需将make ID作为唯一的主键。从主键中删除名称这只是一个示例。我的真实数据有一个销售订单项目编号,这将是我的主键。我以自动递增的方式删除了该列,并使名称成为我唯一的主键,当我在这个示例表和数据上尝试它时,它起了作用。但是当我在实际数据中使用它时,我得到了错误代码:1366。第1行“优惠券百分比”列的整数值“”不正确。现在我不知道出了什么问题。我的实际数据不再有任何自动增量。相反,我有十进制值。我用的是十进制(6,2)。
insert into mysample
select * from temp_table t where t.names not in (select names from mysample);