В MySQL я пытаюсь сделать обновление с соединением на столе, и я получаю 1093. Это код, я использую:Получение кода ошибки MySQL 1093: «Вы не можете указать целевую таблицу« fdd1 »для обновления в предложении FROM» в UPDATE
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' ;
Вы должны также принять к сведению, что псевдонимы также относятся к той же таблице. Я в основном пытаюсь обновить данные из одной строки таблицы с данными из строки непосредственно перед ней (по дате).
Как я могу заставить это работать?
jospratik, я пробовал ваш код дословно и по-прежнему получаю ту же ошибку 1093. – Cash