簡體   English   中英

如果相同的主鍵替換行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM