집 >데이터 베이스 >MySQL 튜토리얼 >두 가지 조건에 따라 MySQL 행을 효율적으로 삽입하거나 업데이트하려면 어떻게 해야 합니까?
INSERT INTO 또는 두 가지 조건으로 업데이트
문제 설명:
사용자에게 다음이 발생합니다. 시간이 많이 걸리는 문제: 두 가지 특정 조건과 일치하는 행이 아직 없는 경우 테이블에 새 행을 삽입합니다. ('이름' 및 '날짜') 또는 일치하는 항목이 발견되면 기존 행을 업데이트합니다.
해결책:
답은 MySQL의 INSERT INTO ..에 있습니다. . ON 중복 키 업데이트 구문. 이 강력한 기능을 사용하면 일치하는 행이 없는 경우 새 행을 삽입하거나 고유 키 제약 조건을 위반하는 경우 기존 행을 업데이트하여 효율적인 데이터 조작이 가능합니다.
원하는 동작을 달성하려면 테이블에 고유 키가 있어야 합니다. 두 열('이름'과 '날짜')에 대해 정의되었습니다(이 경우 복합 키). 이 키는 테이블의 고유 행에 대한 식별자 역할을 합니다.
예시 시나리오:
다음 테이블 구조를 고려하세요.
create table myThing ( id int auto_increment primary key, name int not null, values1 int not null, values2 int not null, dates date not null, unique key(name,dates) -- This line is crucial );
삽입 다음 명령문이 있는 새 행은 동일한 '이름'을 가진 행의 존재 여부에 따라 새 행을 생성하거나 기존 행을 업데이트합니다. 및 'dates':
insert myThing(name,values1,values2,dates) values (777,1,1,'2015-07-11') on duplicate key update values2=values2+1;
예제 결과:
select * from myThing; +----+------+---------+---------+------------+ | id | name | values1 | values2 | dates | +----+------+---------+---------+------------+ | 1 | 777 | 1 | 4 | 2015-07-11 | | 2 | 778 | 1 | 1 | 2015-07-11 | +----+------+---------+---------+------------+
예제에서 볼 수 있듯이 INSERT INTO ... ON DUPLICATE KEY UPDATE 구문은 효율적으로 처리합니다. 정의된 고유 키를 기반으로 삽입 및 업데이트 작업을 모두 수행하므로 복잡한 저장 프로시저가 필요하지 않습니다.
위 내용은 두 가지 조건에 따라 MySQL 행을 효율적으로 삽입하거나 업데이트하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!