0

在我尝试将结果插入新表之前,我的查询执行得很好。在到处搜索并在这里和那里更改与我的原始查询没有太大区别的东西之后,我希望这里有人能弄清楚发生了什么。

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 语句的情况下运行此查询会返回准确的结果。有任何想法吗?

4

1 回答 1

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)

你的索引不会在那里,但这看起来像一个基于左连接的汇总表......

于 2013-02-28T18:26:15.553 回答