2017-04-26 70 views
-1

我有一个带有id(AUTO_INC),user_id,user_interest列的user_interests表。 我想要一个简单的方法来插入数据到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) 
+0

为该表添加一个唯一约束,即'unique(user_id,user_interest)'。 – jarlh

+0

标记您正在使用的dbms。添加更多样本数据 - 并尝试插入数据 - 并向我们展示预期结果! – jarlh

回答

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

修改表的定义,即可以添加独特的约束(USER_ID | user_interest)

相关问题