0

テーブルをあるデータベースから別のデータベースに移動しようとしています。プロセス中にデータをフィルタリングしています。例えば:

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;

列を過度に指定する以外にこれを回避する方法はありますか?

4

2 に答える 2

0

ごめん、

ばかげた質問。結合またはネストされたクエリのより適切な構造を使用します。

当たり前!

于 2012-12-21T12:19:09.020 に答える
0

選択に * があるため、結合の列は結果セットの一部になります。それらを指定します。

于 2012-12-21T12:34:43.847 に答える