スキーマを制御できない不完全なデータベースを修正しようとしています。欠落しているエントリを見つけて挿入する必要があります。
これは私が到達した構文です:
INSERT INTO
downloads (product_id, filename)
VALUES
(
products_id = ( SELECT id
FROM products
WHERE id NOT IN
( SELECT product_id
FROM downloads
)
),
filename = 'default.zip'
)
サブクエリは単独で正常に機能しますが、上記はエラーをスローします
#1093 - You can't specify target table 'download' for update in FROM clause
このエラーに関連するStackOverflowの質問の多くを確認しました(このように)。サブクエリをネストして、「暗黙の一時テーブルを作成するため、同じテーブルとしてカウントされないようにする方法があることを確認しました。あなたは更新しています」が、私はそれを適応させることができませんでした。
私のアプローチが非効率的で問題ない場合は、構文に近い解決策を見つけたいと思っていますが、どの解決策も役に立ちます。