2011-01-08 138 views
0

有沒有辦法說UPDATE items SET qty=10 WHERE **unique key**而不是在下表中說UPDATE items SET qty=10 WHERE userID=1 AND listID=10 and itemID=100MySQL更新唯一索引

CREATE TABLE IF NOT EXISTS `items` (
    `userID` int(20) NOT NULL, 
    `listID` int(20) NOT NULL, 
    `itemID` int(20) NOT NULL, 
    `qty` int(10) NOT NULL, 
    UNIQUE KEY `unique` (`userID`,`listID`,`itemID`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 
+0

你想做什麼?你想改變一行的唯一鍵或更改整個表的唯一鍵? – 2011-01-08 04:11:17

回答

1

我不是100%肯定你問什麼,但如果你想知道,如果你能說出的WHERE子句中的唯一索引並提供某種單一組合價值的發現行你想,答案是否定的。如果你想使用索引,你必須指定三個單獨的列值,並讓MySQL找出這是否是最好的索引(在這種情況下,答案是肯定的)。

0

我知道的唯一方法是:

UPDATE items 
SET qty=10 
WHERE (userID, listID, itemID) = (1, 10, 100) 

是你尋求什麼?

語法等同於使用AND的語法,只是更簡潔一些。它不能保證索引將被使用,儘管這可能是使用這個或你的語法。