我有一个执行得很好的查询,直到我尝试将结果插入到新表中。在搜索了所有内容并在那里改变了与我原始查询没有太大区别的东西之后,我希望有人在这里可以弄清楚发生了什么。
INSERT INTO new_table(col1, col2, col3, col4)
SELECT t1.col1, t2.col2, t1.col3, t1.col4
FROM table1 t1 LEFT JOIN table2 t2 ON (t1.col1=t2.col1)
WHERE (t2.col1 IS NOT NULL)
当我运行此查询时,新表被填充,好像我刚刚说过INSERT INTO new_table SELECT * FROM table1,这显然会从table2中删除任何匹配的值。正如我所说,在没有INSERT语句的情况下运行此查询会返回准确的结果。有什么想法吗?
答案 0 :(得分:3)
为什么不只是
CREATE TABLE new_Table as SELECT t1.col1, t2.col2, t1.col3, t1.col4
FROM table1 t1 LEFT JOIN table2 t2 ON (t1.col1=t2.col1)
WHERE (t2.col1 IS NOT NULL)
您的索引不会出现,但这看起来像是基于左连接的摘要表...