gpt4 book ai didi

Mysql函数更新外键

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

我有一个包含重复数据的表A,我想对其进行规范化。但是还有另一个表 B 引用表 A ids。没有真正的外键。这只是事实。我想创建临时工。表 C 并使用 ON DUPLICATE KEY UPDATE 填充它以从表 A 中删除重复项。但是我丢失了一些从表 B 到表 A 的引用。

我想写一个像这样调用的函数

ON DUPLICATE KEY UPDATE id = setNewId(`id`, VALUES(`id`))

是否可以制作函数 setNewId() 将表 C.idB.id 更新为重复键上的新值更新?

最佳答案

这将创建 C,并删除 unique_field 的所有重复值。

CREATE TABLE C LIKE A;
ALTER TABLE C ADD UNIQUE INDEX (unique_field);
INSERT IGNORE INTO C
SELECT * FROM A;

创建 C 后,您可以使用 AC 之间的连接来查找相应的 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

关于Mysql函数更新外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38406691/

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