2016-04-09 12 views
0

私はユーザーが自分のサイトでカスタマイズしたり切り替えたりできるカラースキームのテーブルを持っています。たとえば、「ダーク」スキームと「ライト」スキームです。どのユーザーがどのスキームを持っているかを最初に確認してこのテーブルを更新する方法が必要なので、スキーム/ユーザーの組み合わせを2回追加しないでください。SQL INSERT IGNOREユニークな値の組み合わせ

| userid | schemename | background | text | 
--------------------------------------------------- 
| 1  | dark  | black  | white | 
| 1  | light  | white  | grey | 
| 2  | dark  | black  | white | 
| 2  | light  | white  | grey | 
etc. 

は私がマスタースキームと同期してこれらのスキームを維持し、更新スクリプトを持っている - ので、ユーザーはスキームを削除するために発生した場合、彼らは再同期することができますマスターとのスキームを。 userid/schemenameの組み合わせがまだテーブルに存在しない場合にのみスキームに追加するinsert文が必要です。 INSERT IGNOREなどを使用できますか?あなたが行うことができます

+0

で、[この](http://stackoverflow.com/a/548570/3294262) – fusion3k

答えて

0

は句

insert into your_destination_table (user_id, schemename, background, text) 
select user_id, schemename, background, text 
from your_source_table 
where (user_id, schemename) not in 
    (select user_id, schemename, background, text 
    from your_destination_table); 
+0

は、私は複数の挿入でこれを組み合わせることができますを見ていない聖霊降臨祭? INSERT INTOテーブル(キー)VALUES(値)、(値)、(値)WHERE(ユーザーID、スキーム名)NOT IN(選択など) ' –

+0

「テーブル内の列の数とタイプ」 )。 "あなたがスクリプトに書かれているのは、これらの方法を尊重しない...そして、複数の挿入には挿入...選択スクリプト挿入するすべての行を挿入する.. ..事実上あなたの必要性をより良く説明してください。 – scaisEdge

+0

あなたがどこでも条件を使うことはできません。 – scaisEdge