두 가지 조건으로 삽입 또는 업데이트
이 문제는 간단해 보입니다. 그러나 효율적인 시간적 솔루션을 찾는 것이 필요합니다. 다음 스키마가 있는 테이블을 생각해 보세요.
ID INTEGER PRIMARY KEY AUTOINCREMENT name INTEGER values1 INTEGER values2 INTEGER dates DATE
매일 이 테이블에 데이터가 추가되어 미래 날짜가 포함된 새 행이 생성됩니다. 'name' 열의 데이터는 유한 집합에서 가져옵니다. 원하는 동작은 새 데이터를 사용할 수 있는 경우 새 행을 삽입하고 '이름'과 '날짜'가 일치하는 행이 이미 존재하는 경우 기존 행을 업데이트하는 것입니다.
해결책:
이런 상황에 적합한 방법은 "INSERT INTO ... ON DUPLICATE KEY UPDATE" 문입니다. 이 문을 사용하면 새 행을 삽입하고 특정 조건을 충족하는 기존 행을 업데이트할 수 있습니다. 귀하의 경우에는 조건이 '이름'과 '날짜'와 일치합니다.
이 방법을 사용하려면 테이블에 삽입 중 충돌을 감지할 고유 키(복합 키일 수 있음)가 있어야 합니다. 이 고유 키는 기본 키이거나 다음과 같은 복합 키일 수 있습니다.
UNIQUE KEY(name, dates)
'이름'과 '날짜'가 동일한 행이 이미 존재하는 경우 삽입 작업은 충돌로 감지되며, "ON DUPLICATE KEY UPDATE" 절에 지정된 업데이트 작업이 수행됩니다.
완료 예:
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 ); -- Insert a new row or update if a row with the same 'name' and 'date' exists INSERT INTO myThing(name, values1, values2, dates) VALUES (777, 1, 1, '2015-07-11') ON DUPLICATE KEY UPDATE values2=values2+1;
"INSERT INTO ... ON DUPLICATE KEY UPDATE" 문을 활용하면 지정된 키의 고유성을 기반으로 새 행을 효율적으로 삽입하거나 기존 행을 업데이트할 수 있습니다.
위 내용은 SQL의 두 가지 조건을 기반으로 데이터를 효율적으로 삽입하거나 업데이트하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!