仅在不重复时才将数据插入两列

时间:2017-04-26 07:21:51

标签: sql insert duplicates

我有一个表user_interests,其中包含id(AUTO_INC),user_id,user_interest列。 我想要一种简单的方法将数据插入user_id和user_interest而不需要重复的条目。

E.g。如果我之前有这样的桌子。

+------------------------------+
| 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 )

2 个答案:

答案 0 :(得分:0)

使用NOT 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 :(得分:-1)

修改表格定义即您可以向(user_id | user_interest)

添加唯一约束