2013-11-25 4 views
3

정수가있는 고유 색인화 된 열 A가 있습니다. 오라클에서 1 씩 증가시키고 싶습니다. 업데이트 테이블 세트 A = A + 1로 설정하면 효과가있었습니다. 하지만 mySQL에서 다음과 같은 오류가 발생합니다 : - MySQL 데이터베이스 오류 : 중복 항목 '2'키 1입니다. 값이 1, 2 및 3 인 테이블에 3 개의 행이 있습니다. 왜 내가이 오류를주는 지 알아. 그러나이 문제를 어떻게 해결할 수 있습니까? 감사.mysql에서 고유 색인화 된 열을 업데이트하십시오.

+0

이렇게 Oracle에서 작동합니까? – Strawberry

+0

어떻게 해결할지는 당신이 원하는 일에 달려 있습니다. a = 2 인 다른 행을 삭제 하시겠습니까? a = 2 인 두 행을 원하십니까? 올바른 최종 결과를 알려 주시면 누군가가 귀하를 도울 수 있습니다. – MJB

+1

Erm, OP는 '2'가 '3'이되는 행을 원할 것입니다. – Strawberry

답변

2

당신이 오류가 발생하여 UPDATE TABLE SET A = A + 1, 1 ~ 2 (1 + 1)에 첫 번째 행을 업데이트 할 때, 당신의 두 번째 행과 충돌을 얻을 것이다 이미 ID와 ROW = 2

당신은 첫 번째와 마지막 행에서 그것을 센더을해야 당신이 당신의 쿼리를 변경해야 할 수 있기 때문에 :

UPDATE TABLE SET ID = ID + 1 ORDER By ID DESC;

DESC 절은 테이블 맨 아래에서 업데이트를 수행하므로 경로에서 중복 된 ID를 찾지 못합니다.

+0

그냥 기록을 위해, 나는 아이크에서 그 대답을 복사하지 않았다. 그러나 나는 그 오류가 왜 발생했는지를 설명하기 위해 입력하는 동안 대답하는 것이 더 빠르다. :) – SkyHunter

+0

와우, 매력처럼 작동합니다, 감사합니다! – xiaoyunwu

3

는 다음을 사용하여이 작업을 수행 할 수있는 ORDER BY : 때문에

update table 
set A=A+1 
order by A desc 
+0

나는 진실로 그것을 몰랐다! – Strawberry

관련 문제