2012-03-09 4 views
0

同じデータ構造を共有する複数のテーブルをすべて1つの特異テーブルにマージしようとしていますが、テーブルを挿入すると、x行が等しくなるように挿入されているようですソース内の金額と一緒にアウト。MySQL;テーブルのマージで行が等しくなる

表1 20,000データ行

インデックステーブル:万データ行

だから私は、次を使用して、インデックステーブルに表1を移動して、挿入した場合:

INSERT IGNORE INTO 'database1`.`Index` SELECT * FROM 
`database1`.`Table1` ; 

使い方上の例では、使用可能な20,000行の10,000行しか挿入しません。

答えて

1

INSERTIGNOREを使用しているので、他の10,000は重複した値であると推測されます。この文はエラーなしで完了します。

+0

私はこれを最初に仮定しましたが、各テーブルにはそれぞれのサイトのそれぞれにユニークなスクレイプされたURLが含まれていました。 – user1260196

+0

@ user1260196 'Index'テーブルの主キーは何ですか? –

0

試しましたか? INSERTと似ていますが、uniqフィールドに置き換えられません。

REPLACE INTO user (id,name) VALUES (12,"John"); 
#if there is user with id = 12 it wil lreplace it. 
0

あなたはINSERT IGNOREを使用しているので、私はあなたが黙って捨てられている10000個の重複キーを持って推測しています。あなたがそれを必要とするのは奇妙だと思いませんでしたか?

テーブルレイアウトによっては、キー制約を回避するためにテーブルを再調整する必要があります。たとえば、挿入するテーブルの新しい自動インクリメントキーを作成し、もう一方のテーブルを追加して、何らかの理由でそのコピーを並べ替えます。

0

テーブルの構造によって異なります。 2つのテーブルに「show create table ...」と表示できますか?

また、mysqlクライアントから得たフィードバック(「Records:100 Duplicates:0 Warnings:0」)もリストアップしてください。

テーブルにUNIQUE KEYSの値がある場合、すべての挿入が成功するわけではありません。

関連する問題