2012-12-27 2 views
4

가능한 중복이 존재하지 않을 경우, 삽입 :
How do I update if exists, insert if not (aka upsert or merge) in MySQL?업데이트 존재하는 경우

나는 엔진을 예약 할 일괄 업데이트 가격을 할 수있는 프로그램이 있습니다.

가격이

$dateStart = '2012-12-01'; 
$dataEnd = '2012-12-31'; 
$hotelId = 1; 
$price = 300000; 

처럼 그리고 데이터베이스는 MySQL의 쿼리, 일괄 업데이트를하고 조건 삽입하는 방법이

id | date  | hotelId | price 
1 | 2012-12-01 | 1  | 100000 

처럼 업데이트 배치를 수행 할

예를 들어, 사용자 입력 datehotelId이 이미 있으면 업데이트를 수행하지만 존재하지 않으면 삽입합니까?

매일 루핑을하고 PHP에 데이터가 존재하는지 여부를 확인하면 실제로 많은 메모리를 소비하게됩니다.

for($i=1; $i<=31; $i++){...} 

가 컴퓨터 자원을 절약 할 수 있습니다 단일/어떤 MySQL의 쿼리를 수행 할 수 있습니다 어떻게 솔루션을 찾고 있어요.

답변

5

INSERT ... ON DUPLICATE KEY UPDATE ... 문을 사용하십시오.

DUPLICATE KEY 조건이 트리거되도록 datehotelId 열에 고유 또는 기본 복합 색인이 있어야합니다.

+0

고유 한 복합 색인을 만드는 방법은 무엇입니까? – GusDeCooL

+1

@GusDeCooL - 단순 :'ALTER TABLE 테이블 고유 키 추가 (date, hotelId)'. [ALTER TABLE 문에 대한 문서] (http://dev.mysql.com/doc/refman/5.5/en/alter-table.html)를 참조하십시오. –

+0

감사합니다. 작동합니다! :디 – GusDeCooL

관련 문제