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' ;
また、エイリアスも同じテーブルを参照していることに注意してください。私は基本的に、テーブル内の 1 つの行のデータをその直前の行のデータ (日付単位) で更新しようとしています。
どうすればこれを機能させることができますか?