問題は、MySQLが、なんらかの理由で、次のようなクエリを記述できないことです。
UPDATE myTable
SET myTable.A =
(
SELECT B
FROM myTable
INNER JOIN ...
)
つまり、UPDATE
を実行している場合 / INSERT
/ DELETE
テーブルでは、内部クエリでそのテーブルを参照することはできません(できます ただし、その外部テーブルのフィールドを参照してください...)
解決策は、myTable
のインスタンスを置き換えることです (SELECT * FROM myTable)
を使用したサブクエリで 、このように
UPDATE myTable
SET myTable.A =
(
SELECT B
FROM (SELECT * FROM myTable) AS something
INNER JOIN ...
)
これにより、必要なフィールドが暗黙的に一時テーブルにコピーされるため、許可されます。
この解決策を見つけました
SELECT * FROM table
だけでは不十分です。 実生活でのサブクエリ。例を単純にしておきたかっただけです。実際には、その最も内側のクエリで必要な列のみを選択し、適切なWHERE
を追加する必要があります。 結果を制限する句もあります。