我想将记录从table2插入到table1。如果在主键中找到重复项,则需要替换记录。类型string
的主键。
所以我的语句看起来像(name
是主键,它是string
。table2
可能引起重复的行,我想对其进行更新):
INSERT INTO `myscheme1`.`table1`
(`table1`.`name`,
`table1`.`id`,
`table1`.`history`)
SELECT `table2`.`name`,
`table2`.`id`,
`table2`.`history`
FROM `myscheme2`.`table2`;
在何处添加UPDATE
?如果我不能使用UPDATE
,能否说明如何使用ON DUPLICATE KEY UPDATE
?
因为我不知道如何应用它?我不知道应使用哪个主键的新字符串来更新旧的字符串(命令正在读取它,并且我有很多重复的情况)。因此,下面的example:假设我知道如果发生重复,我应该输入什么新值。
我更喜欢使用UPDATE
,因此它将自动用新记录替换旧记录。
INSERT INTO
devices(name)
VALUES
('Printer')
ON DUPLICATE KEY UPDATE name = 'Printer';
如果我想使用UPDATE
或ON DUPLICATE KEY UPDATE
,可以请教我如何编辑命令语法吗?
答案 0 :(得分:1)
无论新值是来自docker network ls
NETWORK ID NAME DRIVER SCOPE
90ed18951aa8 bridge bridge local
02a1158b1219 docker-registry_default bridge local
myn3onq0xgdg ingress overlay swarm
2t91hityplpb preprod_default overlay swarm
还是ON DUPLICATE KEY UPDATE
,您都可以使用SELECT
。
VALUES
如果INSERT INTO `myscheme1`.`table1`
(`table1`.`name`, `table1`.`id`, `table1`.`history`)
SELECT `table2`.`name`, `table2`.`id`, `table2`.`history`
FROM `myscheme2`.`table2`
ON DUPLICATE KEY UPDATE id = VALUES(id), history = VALUES(history);
与table1
中的某行具有相同的名称,则其他列将被复制到该行中。
您不需要在table2
中包括name
列。它已经具有另一个表中的值,因为这就是使其重复的原因。