2016-10-22 128 views
0

我有一個包含2列,userid和messageid的表。我通過php腳本自動更新它,但我無法獲得工作插入語句。我不介意是否有重複的userid或messageid的重複(實際上應該是重複的),我只是不希望重複使用同一個userid和messageid組合。有沒有什麼辦法可以寫一個查詢來爲我做,或者我必須在php級別處理它?插入到2列表中,避免重複記錄

我可能試過了20個不同的查詢,我發現在這裏和谷歌,但沒有得到它的權利。這是我想的最後一件事:

INSERT INTO interests_join (userid, interestid) 
VALUES (1, 4) 
WHERE NOT EXISTS 
    (SELECT userid, interestid FROM interests_join WHERE userid = 1 AND interestid = 4) 

回答

3

您可以添加一個UNIQUE KEY,SQL將拒絕插入新行是現有的副本。

ALTER TABLE `interests_join` ADD UNIQUE `row` (`userid`, `interestid`); 

然後,如果查詢成功或不成功(錯誤#1062),您將不得不從PHP檢查。如果存在重複的行,則無法應用該鍵,必須先將其移除。

+0

希望能夠通過查詢來整合這一點,而不是改變表格,但是這可以完成工作。 –