gpt4 book ai didi

mysql - 将多行更新为另一个表中的值 (FK)

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

我已将 Excel 文档导入 MySQL 以整理并更好地利用数据,但运行更新时遇到问题。

下面用作示例的所有表格;

表格 Assets 注册电话模拟团队

asset_register 包含以下列;

id INT,
serialNo VARCHAR,
simNo INT,
team VARCHAR

问题是我想创建一个团队表并在 asset_register 表中引用 teamId。

这有道理吗?我不想存储实际的团队名称,而是想要团队表的外键。

问题在于更新从 Excel 导入的 asset_register 表中的所有数据。团队数量与用户几乎相同(约 500 个),我需要编写查询或存储过程来更新所有团队。

我认为存储过程是最好的选择。到目前为止,我有以下内容,但它将 team 的值更新为“NULL”而不是 teamId。

    DELIMITER //
DROP PROCEDURE `updateCrews`//
CREATE DEFINER=`root`@`localhost` PROCEDURE `updateCrews`()

BEGIN

DECLARE rowCount INT;
DECLARE crewNameFromRegister VARCHAR(7);
DECLARE currentRow INT;
DECLARE newCrewdata VARCHAR(7);

SET rowCount=(SELECT COUNT(*) FROM asset_register);
SET currentRow = 1;

myUpdateLoop: WHILE (currentRow < rowCount) DO

SET crewNameFromRegister = (SELECT crewID FROM asset_register WHERE id = currentRow);
SET newCrewData = (SELECT id FROM crews WHERE crewName = crewNameFromRegister);
UPDATE asset_register SET crewID = newCrewData;

SET currentRow = currentRow + 1;

END WHILE myUpdateLoop;

END//

DELIMITER ;

任何帮助将不胜感激,可能有更好的方法来做到这一点,并且朝着正确的方向插入会很棒。

最佳答案

如果我很好地理解你的问题,我建议你使用本文中mysql手册中描述的多表更新语法:MutliTableUpdate 。您尝试通过 id 更改字符串键,请注意数据类型/转换。

想法应该是:

UPDATE asset_register, crews
SET asset_register.crewID = crews.id
WHERE crews.crewName = asset_register.crewID

但是如果您使用其他列来执行此操作并检查中间结果,可能会更安全。

在你的第一个例子中:

id INT,
serialNo VARCHAR,
simNo INT,
team VARCHAR

您可以添加 teamID 列、更新并重命名您的列

关于mysql - 将多行更新为另一个表中的值 (FK),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7529893/

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