我正在尝试将表从一个数据库移动到另一个数据库。我在此过程中过滤数据。例如:
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;
除了过度指定列之外,还有其他方法吗?