2011-01-08 4 views
0

UPDATE items SET qty=10 WHERE userID=1 AND listID=10 and itemID=100 대신 다음 테이블에 UPDATE items SET qty=10 WHERE **unique key**라고 말 할 수 있습니까?MySQL 업데이트 고유 인덱스

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

무엇을 하시겠습니까? 행의 고유 키를 변경하거나 전체 테이블의 고유 키를 변경 하시겠습니까? –

+0

@Nylons Smile, 내 질문을 업데이트했습니다. 의미가 없으므로 – afarazit

+0

해명 해 주셔서 감사합니다. –

답변

1

는 당신이 요구하는지 100 % 확실하지 않다, 그러나 당신이 알고 싶다면 당신은 WHERE 절에 고유 인덱스의 이름을 지정하고 행을 찾을에 단일 결합 된 값의 어떤 종류를 제공 할 수있는 경우 당신이 원한다면 대답은 '아니오'입니다. 인덱스를 사용하려면 예제에서와 같이 세 개의 별도의 열 값을 지정하고 MySQL이 이것이 사용할 최적의 인덱스인지 여부를 알아 내야합니다 (이 경우 대답은 '예'입니다). 내가 아는

0

유일한 방법은 다음과 같습니다

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

당신이 무엇을 추구인가?

구문은 AND을 사용하는 구문과 동일합니다. 이 구문이나 구문을 사용하는 것이 가능하지만 인덱스를 사용할 것이라고 보증하지는 않습니다.