2012-04-28 16 views
5

は既にこのようなトピックを検索していますが、2つの異なるソリューションが見つかりましたが、1つも動作しません。MySQL INSERT IGNOREまたはON DUPLICATE KEY DO_NOTHING

テーブルに構造があります。 ID(auto_increment primary_key)| UID(int)| FAV_ID(int)|

UIDとFAV_ID(どちらも)がすでに存在する場合、このFAV_TABLEに新しいレコードを挿入する必要があります。

私のクエリの例:mysqlのマニュアルとして

INSERT INTO FAV_TABLE (uid, fav_id) VALUES ($u_id,$s_id) ON DUPLICATE KEY UPDATE uid = uid 

またはこの1

INSERT IGNORE FAV_TABLE (uid, fav_id) VALUES ($u_id,$s_id); 

は、このクエリがPRIMARY_KEYが同じである場合にのみ、レコードを追加しませんと言います。 そして、uid + fav_idのペアが一意である場合、レコードを追加しないようにするクエリが必要です。 すべてのソリューション?ありがとう

答えて

4

ALTER TABLE FAV_TABLE ADD UNIQUE KEY(uid, fav_id); 
+0

素晴らしい、おかげでたくさん! – 265

2

INSERT IGNOREまたはON DUPLICATE KEYは、一意のキーが複製されている場合にのみ機能します。

uidfav_idの両方のフィールドにUNIQUEのインデックスを追加する必要があります。 そのようにして、複製ペアを挿入すると無視されます。あなたはこれらの列にUNIQUE KEYを追加する必要が

関連する問題