gpt4 book ai didi

mysql - 使用 REPLACE INTO 更新数据库

转载 作者:行者123 更新时间:2023-11-29 03:10:37 25 4
gpt4 key购买 nike

我有 table :

select * from person;

+----+------+---------+
| id | name | surname |
+----+------+---------+
| 1 | John | Doe |
| 2 | Mary | Smith |
+----+------+---------+
2 rows in set (0.00 sec)

我需要替换 MySQL 数据库中的值。所有值都具有相同的 ID,所以我尝试:

replace into person (id,name) values (1,'Victor');

select * from person;
+----+--------+---------+
| id | name | surname |
+----+--------+---------+
| 1 | Victor | NULL |
| 2 | Mary | Smith |
+----+--------+---------+
2 rows in set (0.00 sec)

问题是它将姓氏设置为 NULL。

我知道我可以用 UPDATE person SET name='Victor' WHERE id=1 来做到这一点,但我有一个巨大的 SQL 文件,其转储包含许多 INSERT INTO,所以我在想关于使用 REPLACE INTO 因为具有相同的语法并且会更快,只需进行搜索和替换(INSERT -> REPLACE INTO)。

编辑:问题是我有一个像这样的巨大转储文件:

INSERT INTO person (id,name) VALUES (1,'Victor');
INSERT INTO person (id,name) VALUES (2,'Mark');
INSERT INTO person (id,name) VALUES (3,'Steve');
INSERT INTO person (id,name) VALUES (4,'Lou');
INSERT INTO person (id,name) VALUES (5,'Jessica');

等..

所以我正在寻找将所有这些名称更新到数据库中的最简单方法。如果我能做这样的事情就好了:UPDATE person SET (id,name) VALUES (1,´Victor')

最佳答案

理想情况下你会使用这样的东西:

INSERT INTO person (id, name) values ('1', 'Victor') 
ON DUPLICATE KEY UPDATE name = 'Victor';

REPLACE INTO没有达到你想要的结果的原因是因为REPLACE INTO,在功能方面,删除行并重新插入数据你提供了。

如果您的数据库转储包含数据库中已有的所有信息,加上更新的信息,您最好只删除您的表并在干净的数据库上运行导入。如果数据库中存储的数据未包含在转储中,那么导入就太生硬了,无法使用。

可能很幸运地在每个语句的末尾敲击 ON DUPLICATE KEY UPDATE name = 'foo';

关于mysql - 使用 REPLACE INTO 更新数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8993733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com