>데이터 베이스 >MySQL 튜토리얼 >두 가지 조건에 따라 MySQL 행을 효율적으로 삽입하거나 업데이트하려면 어떻게 해야 합니까?

두 가지 조건에 따라 MySQL 행을 효율적으로 삽입하거나 업데이트하려면 어떻게 해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-04 16:43:41667검색

How Can I Efficiently INSERT or UPDATE a MySQL Row Based on Two Conditions?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.