gpt4 book ai didi

mysql - 插入唯一行而不更新旧行

转载 作者:行者123 更新时间:2023-11-29 06:05:38 24 4
gpt4 key购买 nike

我在不同的数据库中有两个相似的表,我想从另一个表插入一个表。同时,我想确保每次 mySql 遇到“重复 id”错误时,它都会在新表的底部插入行并分配一个新的唯一 id。我已经尝试过:
INSERT...SELECT...ON DUPLICATE KEY UPDATE
但是我找不到一种方法让它插入到新行中,如果它查找“重复键”而不是更新上一行。

最佳答案

如果您可以为复制到目标表的每条记录分配新的 id,无论源表中的 id 之前是否存在于目标中,您可以简单地不提供 id 并允许 MySQL 使用默认的 NULL 值,从而导致分配 auto_increment 值:

INSERT INTO destdb.tbl (colA, colB, colC)
SELECT colA, colB, colC
FROM srcdb.tbl

否则,您将需要使用类似 NULLIF() 的内容根据 SELECT 中将表连接在一起,将 id 显式设置为 NULL(如果它已存在):

INSERT INTO destdb.tbl (id, colA, colB, colC)
SELECT NULLIF(src.id, dst.id), src.colA, src.colB, src.colC
FROM srcdb.tbl src LEFT JOIN destdb.tbl dst USING (id)

关于mysql - 插入唯一行而不更新旧行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11613556/

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