gpt4 book ai didi

mysql - 单个查询中的多个更新

转载 作者:行者123 更新时间:2023-11-28 23:56:59 25 4
gpt4 key购买 nike

在我的数据库中,有几个索引已更新,为了保存一年的数据,我需要重新排列这些索引。

所以,我有一个名为 FloatTableOld 的表,其中有一个名为 TagIndex 的字段需要更新。

我还有存储在 TagTableOld 中的旧索引,以及存储在 TagTable 中的新索引,它们共享字段 TagName,我需要将 TagTableOld.TagIndex 替换为 TagTable.TagIndex.

我遇到了一些麻烦,因为我想在单个查询中执行此操作。我得到的是:

UPDATE `FloatTableOld` 
SET `FloatTableOld`.`TagIndex` =
(
SELECT `relacao`.`newTag` FROM
(
SELECT `TagTable`.`TagName`,
`TagTableOld`.`TagIndex` AS `oldTag`,
`TagTable`.`TagIndex` AS `newTag`
FROM `TagTable`
INNER JOIN `TagTableOld`
ON `TagTable`.`TagName` = `TagTableOld`.`TagName`
) AS `relacao`
WHERE `FloatTableOld`.`TagName` = `relacao`.`oldTag`
)
WHERE `FloatTableOld`.`TagIndex` =
(
SELECT `FloatTableOld`.`TagIndex`
FROM `FloatTableOld`
)

但是我得到以下错误:

ERROR 1093 (HY000): You can't specify target table 'FloatTableOld' for update in FROM clause

谁能帮我解决这个问题?无法真正理解错误。

最佳答案

为此,您可以使用 updatejoin。如果我理解正确的话:

update floattableold fto join
tagtableold tto
on fto.tagindex = tto.tagindex join
tagtable tt
on tt.tagname = tto.tagname
set fto.tagindex = tt.tagindex;

关于mysql - 单个查询中的多个更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31428359/

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