my sql 에 이 기록 이 존재 하면 업데이트 되 고 존재 하지 않 으 면 기록 을 삽입 하 는 sql


INSERT table (auto_id, auto_name) values (1, ‘yourname') ON DUPLICATE KEY UPDATE auto_name='yourname'
ON DUPLICATE KEY UPDATE 의 사용 은 ON DUPLICATE KEY UPDATE 를 지정 하고 줄 을 삽입 하면 UNIQUE 색인 이나 PRIMARY KEY 에 중복 값 이 나타 나 면 이전 줄 UPDATE 를 실행 합 니 다.예 를 들 어 열 a 가 UNIQUE 로 정의 되 고 값 1 을 포함 하면 다음 두 문 구 는 똑 같은 효 과 를 가진다.

mysql> INSERT INTO table (a,b,c) VALUES (1,2,3)
-> ON DUPLICATE KEY UPDATE c=c+1;
mysql> UPDATE table SET c=c+1 WHERE a=1;
줄 이 신기록 으로 삽입 되면 영향 을 받 는 줄 의 값 은 1 이다.기 존 기록 이 업데이트 되면 영향 을 받 는 줄 의 값 은 2 입 니 다.설명:열 b 도 유일한 열 이 라면 INSERT 는 이 UPDATE 문구 와 비슷 합 니 다.

mysql> UPDATE table SET c=c+1 WHERE a=1 OR b=2 LIMIT 1;
a=1 OR b=2 가 여러 줄 과 일치 하면 한 줄 만 업 데 이 트 됩 니 다.일반적으로,당신 은 가능 한 한 여러 개의 유일한 키 워드 를 가 진 시계 에 ON DUPLICATE KEY 자 구 를 사용 하 는 것 을 피해 야 합 니 다.UPDATE 자구 에서 VALUES(colname)함 수 는 INSERT...UPDATE 문장의 INSERT 부분 에서 열 값 을 참조 합 니 다.반복 키워드 충돌 이 발생 하지 않 았 다 면 UPDATE 자구 의 VALUES(colname)삽 입 된 col 을 참조 할 수 있 습 니 다.name 의 값.이 함 수 는 여러 줄 의 삽입 에 특히 적용 된다.VALUES()함 수 는 INSERT...UPDATE 구문 에서 만 의미 가 있 고 다른 때 는 NULL 로 돌아 갑 니 다.예제:

mysql> INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
-> ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);
이 문 구 는 다음 과 같은 두 문장의 역할 을 합 니 다.

mysql> INSERT INTO table (a,b,c) VALUES (1,2,3)
-> ON DUPLICATE KEY UPDATE c=3;
mysql> INSERT INTO table (a,b,c) VALUES (4,5,6)
-> ON DUPLICATE KEY UPDATE c=9;
ON DUPLICATE KEY UPDATE 를 사용 할 때 DELAYED 옵션 이 무 시 됩 니 다.

좋은 웹페이지 즐겨찾기