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 に答える