2012-06-15 4 views
0

나는 만질 필요가없는 기존 값이 이미있는 DB 테이블을 가지고 있습니다. 나는 그렇게처럼 내 SQL을 호출 할 때 :기존 값으로 중복 키 업데이트 문제?

내 표는 현재 다음과 같습니다 = "DUPLICATE KEY ON (5 ~ 20) sometable (ID, COL2) 값으로 를 삽입

id col1 col2 
5 10 

$의 SQL UPDATE id = 5 ";

나는 테이블 내 삽입 후 다음과 같이 기대 : 업데이 트를 사용하지 않고이 작업을 수행 할 수있는 방법이

id col1 col2 
5 10 20 

있습니까? 좋은 예를 들어

답변

0

가정 ID는이

INSERT INTO sometable (id, col2) VALUES (5, 20) 
ON DUPLICATE KEY UPDATE id = 5 

id 필드를 업데이트 말한다 키

입니다 ~ 5 (UPDATE ID =5). 어느에만 ID가 5 인 경우 일을하고 아무 의미가 없을 것입니다

당신은 원하는 것은 하나

INSERT INTO sometable (id, col2) VALUES (5, 20) 
ON DUPLICATE KEY UPDATE col2 = 20; 

또는 당신은 중복이 다음 Wilken suggested으로서 사용이 있다면 그것이했을 값을 참조 할 경우 COL2 = VALUES(COl2)

DEMO

+0

훌륭한 예제이지만 내 쿼리는 여전히 두 번째 컬럼 (col1)에 대해 불평한다. 기본값은 없다. .. – Paul

+0

@Paul 오, 당신은 원래의 질문에서 그렇게 말하지 않았습니다. col1이 공백이 아니며 기본값이 지정되지 않은 경우 열 목록에 포함시키지 않으면'INSERT' 부분이 작동하지 않습니다. 삽입물을 정말로하고 싶습니까? 삽입하려는 경우 col1에 대한 값은 무엇입니까? –

1

사용 VALUES()

INSERT INTO sometable (id, col2) VALUES (5, 20) 
    ON DUPLICATE KEY UPDATE col2 = VALUES(col2); 
+0

1. (보통 나는'SET' 키워드를 포함 시키려고 문법을 엉망으로 만든다. 그리고 문서를 다시보아야한다.) – spencer7593