2017-04-26 8 views
-1

ID(AUTO_INC)、user_id、user_interestの列を持つテーブルuser_interestsがあります。 重複したエントリを使わずにuser_idとuser_interestにデータを挿入する簡単な方法が必要です。重複していない場合にのみ2つの列にデータを挿入

など。前にこのようなテーブルがあれば。

+------------------------------+ 
| ID | user_id | user_interest | 
+------------------------------+ 
| 1 | 2  | Music   | 
| 2 | 2  | Swimming  | 
+------------------------------+ 

私は今insert into table (user_id, user_interest) values ((2, Dance),(2, Swimming)、私は(2、ダンス)エントリに挿入する必要がある場合は - 以来ではない(2、水泳)(2、水泳)がすでにテーブルに存在します。

私はupsertコマンドを見ましたが、以下のようなコマンドの作成も試みましたが、うまくいきません。

INSERT INTO `user_interests`(`user_id`,`interest`) 
VALUES ("2","Music") 
WHERE (SELECT COUNT(`interest`) FROM `user_interests` 
     WHERE `interest` = "Music" AND `user_id` = "2" 
     Having COUNT(`interest`) <=0) 
+0

テーブルにユニーク制約を追加します。これは 'unique(user_id、user_interest)'です。 – jarlh

+0

使用しているdbmsにタグを付けます。もう少しサンプルデータを追加し、データを挿入しようとしましたが、期待した結果を見せてください! – jarlh

答えて

0

使用しないメソッドをEXISTS:あなたはにユニーク制約を追加することができます

INSERT INTO your_table (user_id ,user_interest) 
SELECT @userId , @UserIntreset 
WHERE NOT EXISTS(SELECT 1 FROM your_table user_id = @userid AND user_interest 
= @userinterest) 

またはあなたのテーブルに一意性制約を作成し、

ALTER TABLE your_table 
ADD CONSTRAINT Constraint_Name UNIQUE (Column_Name1,Column_Name2) 
-1

変更テーブル定義、すなわち(USER_ID | user_interest)