2012-12-21 60 views
0

我想將表從一個數據庫移動到另一個。我正在過程中過濾數據。例如:MYSQL將表移動到第二個數據庫和篩選器

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; 

有沒有解決這個另一種方式比過分指定列?

+0

我會指定無論列。否則,MySQL可能會錯誤地匹配它們。大混亂。 – ethrbunny

回答

0

對不起,

愚蠢的問題。您可以使用更好的連接結構或嵌套查詢。

呃!

0

由於您在*中選擇連接的列將成爲結果集的一部分。指定它們。

+0

是的,謝謝。正是我所制定的。但實際上,實際上在非常大的表上,複製表格並刪除不需要的記錄實際上更快。然後導出該表。 – niccol

相關問題