2014-06-22 29 views
1

我有像下面的表結構(如下面的虛擬數據)。MySQL插入或更新(其中2列匹配)

RecordId | UserId | TestId | Score 
---------------------------------- 
    1  | 1 | 4 | 98 
    2  | 1 | 5 | 92 
    3  | 1 | 6 | 91 
    4  | 2 | 4 | 99 
    5  | 2 | 5 | 07 
    6  | 2 | 6 | 08 

我想update以上,但我沒有RecordId得心應手。 因此,讓我們說UserId 2TestId 5得到了Score 55

我們目前不知道甚至存在的UserId 2,因此如果數據不存在,則需要添加數據。如果UserId和TestId已經存在,我需要更新它們。

我不'想'我想要使用任何replace查詢,因爲我已經讀了這些刪除舊記錄和創建一個新的,這將有一個新的Id。

我'認爲'它需要是updateon duplicate update但我不能得到這個工作?

任何幫助將不勝感激。

+0

顯示您的嘗試.http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html – Mihai

+0

已閱讀該頁面。正在嘗試這從我看的東西看起來是正確的。 'UPDATE test SET Score = 55 WHERE UserId = 2 AND TestId = 5 LIMIT 1;' –

+0

再次閱讀該鏈接,有一個特定的語法,不會從更新開始。 – Mihai

回答

1

好的,這是答案。 原來我的查詢是罰款,但我需要建立一個​​

下面是我用準備好的SQL語句。

INSERT INTO test (UserId, TestId, Score) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE UserId=? TestId=? Score=?; 

爲了使這個更新的時候UserId & TestId獨特的組合我用後續的SQL查詢。

ALTER TABLE test ADD UNIQUE KEY `UserTests` (`UserId`, `TestId`); 

我希望這個&我的解釋可以幫助別人。