MySQL更新唯一索引

时间:2011-01-08 02:38:20

标签: mysql sql sql-update

有没有办法说UPDATE items SET qty=10 WHERE **unique key**而不是在下表中说UPDATE items SET qty=10 WHERE userID=1 AND listID=10 and itemID=100

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;

2 个答案:

答案 0 :(得分:1)

我不是100%肯定你在问什么,但如果你想知道你是否可以在WHERE子句中命名唯一索引并提供某种单一组合值来找到你想要的行,答案是否定的。如果要使用索引,则必须在示例中指定三个单独的列值,并让MySQL确定这是否是最佳使用索引(在这种情况下,答案是肯定的)。

答案 1 :(得分:0)

我知道的唯一方法是:

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

这就是你寻求的吗?

语法等同于使用AND的语法,只是更紧凑。它不保证将使用索引,尽管可能使用此语法或您的语法。