テーブルをあるデータベースから別のデータベースに移動しようとしています。プロセス中にデータをフィルタリングしています。例えば:
DROP TABLE IF EXISTS target_db.products;
CREATE TABLE target_db.products LIKE original_db.products;
INSERT INTO target_db.products
SELECT * FROM original_db.products
WHERE products_status = 1
AND products_date_added > (SELECT DATE_SUB(now(), INTERVAL 18 MONTH));
これは正常に機能し、期待どおりのレコードが得られます。ただし、WHERE 句に別のテーブルが含まれている場合は失敗します (列リストが一致しないため)。次に例を示します。
# export products
DROP TABLE IF EXISTS target_db.products_description;
CREATE TABLE target_db.products_description LIKE original_db.products_description;
INSERT INTO target_db.products_description
SELECT * FROM original_db.products_description pd, original_db.products p
WHERE p.products_status = 1
AND p.products_date_added > (SELECT DATE_SUB(now(), INTERVAL 18 MONTH))
AND pd.products_id = p.products_id;
列を過度に指定する以外にこれを回避する方法はありますか?