2017-04-26 64 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)

相關問題