2011-01-08 214 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的语法,只是更简洁一些。它不能保证索引将被使用,尽管这可能是使用这个或你的语法。