gpt4 book ai didi

mysql - 获取 MySQL 错误代码 1093 : "You can' t specify target table 'fdd1' for update in FROM clause"in UPDATE

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

在 MySQL 中,我尝试通过表上的连接进行更新,但收到 1093 错误。这是我正在使用的代码:

UPDATE fdd_test AS fdd1
INNER JOIN fdd_test AS fdd2
ON fdd2.Trade_Date = (
SELECT MAX(fddsub.Trade_Date)
FROM fdd_test fddsub
WHERE fddsub.Trade_Date < fdd1.Trade_Date)
SET fdd1.Prior_Pct_UpDn_Since_Open = fdd2.Pct_UpDn_Since_Open,
fdd1.Prior_14_Day_MFI = fdd2.14_Day_MFI
WHERE fdd1.Symbol = 'A' ;

我也尝试过使用这种语法,但是会出现编译错误:

UPDATE fdd_test AS fdd1
SET fdd1.Prior_Pct_UpDn_Since_Open = fdd2.Pct_UpDn_Since_Open,
fdd1.Prior_14_Day_MFI = fdd2.14_Day_MFI
INNER JOIN fdd_test AS fdd2
ON fdd2.Trade_Date = (
SELECT MAX(fddsub.Trade_Date)
FROM fdd_test fddsub
WHERE fddsub.Trade_Date < fdd1.Trade_Date)
WHERE fdd1.Symbol = 'A' ;

您还应该注意别名也引用同一个表。我基本上是在尝试用表中一行的数据更新表中前一行的数据(按日​​期)。

我怎样才能让它工作?

最佳答案

UPDATE fdd_test AS fdd1,  fdd_test  AS fdd2
SET fdd1.Prior_Pct_UpDn_Since_Open = fdd2.Pct_UpDn_Since_Open,
fdd1.Prior_14_Day_MFI = fdd2.14_Day_MFI
WHERE fdd2.Trade_Date = (
SELECT MAX(fddsub.Trade_Date)
FROM fdd_test fddsub
WHERE fddsub.Trade_Date < fdd1.Trade_Date) AND fdd1.Symbol = 'A' ;`

关于mysql - 获取 MySQL 错误代码 1093 : "You can' t specify target table 'fdd1' for update in FROM clause"in UPDATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17243710/

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