更新外键的Mysql函数
我有一个包含重复数据的表a,我想对其进行规范化。但是还有另一个表B,它引用表Aids。没有真正的外键。这只是事实。我想创建临时。表C并在重复键更新时使用填充,以从表A中删除重复项。但是,我丢失了一些ID,这些ID引用表B到表A 我想写一个函数,它的调用如下更新外键的Mysql函数,mysql,function,duplicates,Mysql,Function,Duplicates,我有一个包含重复数据的表a,我想对其进行规范化。但是还有另一个表B,它引用表Aids。没有真正的外键。这只是事实。我想创建临时。表C并在重复键更新时使用填充,以从表A中删除重复项。但是,我丢失了一些ID,这些ID引用表B到表A 我想写一个函数,它的调用如下 ON DUPLICATE KEY UPDATE id = setNewId(`id`, VALUES(`id`)) 是否可以使函数setNewId()在更新dulicate键时将表C.id和B.id更新为新值 这将创建C,并删除unique
ON DUPLICATE KEY UPDATE id = setNewId(`id`, VALUES(`id`))
是否可以使函数setNewId()在更新dulicate键时将表C.id和B.id更新为新值 这将创建
C
,并删除unique\u字段的所有重复值
CREATE TABLE C LIKE A;
ALTER TABLE C ADD UNIQUE INDEX (unique_field);
INSERT IGNORE INTO C
SELECT * FROM A;
创建C
后,可以使用a
和C
之间的连接来查找相应的ID,并使用该ID更新B
UPDATE B
JOIN A ON B.foreign_key = A.id
JOIN C ON C.unique_field = A.unique_field AND C.id != A.id
SET B.foreign_key = C.id;
完成后,放下A
并将C
重命名为A
他甚至还没有C,巴尔马他说他要创建C,我想他知道怎么做。好吧,反正我把它添加到了答案中。是的,我最喜欢的一个电话,插入忽略
。那个电话万岁:p。。。有人说它在5.7中被抛弃了。不确定,我仍然和你在一起。没有足够的时间去尝试。现在谢谢你。