MYSQL将表移动到第二个数据库并过滤

时间:2012-12-21 12:05:47

标签: 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;

除了过度指定列之外,还有其他方法吗?

2 个答案:

答案 0 :(得分:0)

对不起,

愚蠢的问题。您使用更好的连接结构或嵌套查询。

咄!

答案 1 :(得分:0)

由于您在选择*时,连接的列将成为结果集的一部分。指定它们。