gpt4 book ai didi

mysql - 选择列然后使用所选值更新

转载 作者:行者123 更新时间:2023-11-29 00:22:50 24 4
gpt4 key购买 nike

是的,所以我正在将数据从旧的数据库结构迁移到新的数据库结构,除了一张表外,一切都在膨胀。

我在新结构中拥有所有内容,但我现在需要更改一些 ID。

简而言之,我注意到我现在有一个表,因为旧数据有一些重复项。唯一的区别是 PK。

在数据库的其他地方,我有引用该表的表,它们需要引用相同的行。

我运行了一个查询,它为我提供了我想要保留的所有 PK 以及我想要在其他表的外键列中更改的所有 PK。

这是我的代码:

SELECT p1.priceID, p2.priceID 
FROM price p1 LEFT JOIN price p2
ON (p1.productTimeID = p2.productTimeID
AND p1.priceTypeID = p2.priceTypeID
AND p1.fareTypeID = p2.fareTypeID
AND p1.priceID < p2.priceID)
WHERE p1.priceID != p2.priceID

p1是我要保留的PK,p2是我要在其他表中搜索并替换为对应的p1 PK的FK

谢谢!

最佳答案

您可以在该查询和您想要更新 priceID 的任何其他表之间执行 INNER JOIN,并将新值放在那里:

UPDATE someOtherTable s
INNER JOIN
(
SELECT p1.priceID AS newPriceID, p2.priceID AS oldPriceID
FROM price p1
LEFT JOIN price p2
ON (p1.productTimeID = p2.productTimeID
AND p1.priceTypeID = p2.priceTypeID
AND p1.fareTypeID = p2.fareTypeID
AND p1.priceID < p2.priceID)
WHERE p1.priceID != p2.priceID
) a
ON s.priceID = a.oldPriceID
SET s.priceID = a.newPriceID

关于mysql - 选择列然后使用所选值更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20455845/

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