2009-12-03 7 views
2

테이블에 데이터를 삽입하려면 테이블에 이미 rName의 동일한 입력 값이 있으면이 행을 업데이트해야합니다 (rName은 고유 인덱스이므로) 그것은 모두 잘합니다.필드에 null 또는 0이 포함되어있는 경우에만 MYSQL 필드를 업데이트하십시오.

하지만 업데이트 (UPDATE) 필드에 이미 (NULL) 값이없는 필드 만 업데이트하고 싶습니다.

INSERT INTO $table 
(`rDate`, `rName`, `rFormat`, `rText`) VALUES 
(CURRENT_TIMESTAMP, 'name3', 'formate22') ON DUPLICATE KEY UPDATE 
rFormat=VALUES(rFormat), 
IF('rFiles'=NULL,rFiles=VALUES(rFiles), rFiles=VALUES(rSizeMB)), 
rText=VALUES(rText) 

또한 내가하는 일을하는 것이 최선입니까? 약간의 거부감이있는 것처럼 보입니다. 여기에 표시된 필드의 두 배 정도의 양을 가지고 있기 때문에 나는 그 질문에 대해 그냥 잘라 냈습니다. 나는 비트에 (IF 같은) 고급 MySQL의 물건을 사용하지 않은

... 
ON DUPLICATE KEY UPDATE 
rFormat=VALUES(rFormat), 
rFiles=IF(ISNULL(rFiles), VALUES(rFiles), VALUES(rSizeMB)), 
rText=VALUES(rText); 

, 그래서 나는 이것에 대해 긍정적 인 아니지만, 그것은 바로 대해해야한다 :

답변

4

이보십시오. 중요한 부분은 rFiles를 IF에 의해 반환 된 값으로 설정하는 것입니다.

+0

건배, 효과가있었습니다. 머리 꼭대기에서 이것을 어떻게 기억할 수 있을지 모르겠지만, 나중에 사용하기 위해이 물건을 대부분 써야합니다. 그렇지 않으면 잊어 버릴 수 있습니다. 다시 한번 감사드립니다. – Mint

+0

문제 없습니다. 다행입니다. :) – jakeboxer

관련 문제