2012-02-22 47 views
1

下面的代码是给我一个模糊的和无益的错误:mysql查询语法的问题?试图插入过一个INNER JOIN的

INSERT INTO database VALUES * FROM dbtemp WHERE dbtemp.number NOT IN (SELECT dbtemp.number FROM dbtemp INNER JOIN database ON dbtemp.number = database.number AND dbtemp.price = database.price); 

我已经成功地在这些数据库上运行其他查询,所以我知道它只是与语法问题本声明。但对于我的生活,我看不出有什么不对。任何建议/意见将不胜感激。

谢谢!

+0

什么是模糊和无益的错误? – Mikhail 2012-02-22 19:36:25

回答

2

这应该是INSERT INTO SELECT声明吗?你的INSERT INTO database VALUES *语法是犯罪嫌疑人...

INSERT INTO database 
    SELECT * FROM dbtemp 
    WHERE dbtemp.number NOT IN (
    SELECT dbtemp.number FROM dbtemp INNER JOIN database ON dbtemp.number = database.number AND dbtemp.price = database.price 
); 

在做一个INSERT SELECT这样,最好是使用明确的列名,而不是SELECT *,以确保他们以正确的顺序返回:

INSERT INTO database 
    SELECT 
    col1, 
    col2, 
    col3 
    FROM dbtemp 
    WHERE dbtemp.number NOT IN (
    SELECT dbtemp.number FROM dbtemp INNER JOIN database ON dbtemp.number = database.number AND dbtemp.price = database.price 
);