2012-12-14 1 views
0

과 같이 항목을 업데이트하거나 작성하십시오. 새로운 것을 받았다.mysql : 제출 된 날짜가 db보다 최신 인 항목을 업데이트하거나 작성하십시오. 제목에 새 값을 삽입하거나 기본 키가 이미 존재하는 경우 행을 업데이트하려는 경우 데이터베이스 값이 이전보다 더 오래된 경우에만

쿼리는 다음과 같이하지만 그것은 새로운 있다면 문이

INSERT INTO myTable(field1_key, field2, datefield) VALUES('val1', 'val2', '2012-12-12 12:12:12') 
ON DUPLICATE KEY UPDATE 
field2='val2' 
datefield='2012-12-12 12:12:12' 
WHERE datefield <'2012-12-12 12:12:12' 
+0

는'field1' promary 열쇠를 ? 그렇지 않다면 키 중복을 결코 얻지 못할 것입니다. –

답변

3

그냥 같은 값을 "대체"는 문제가 있습니다

INSERT INTO myTable(field1, field2, datefield) VALUES ('val1', 'val2', '2012:12:12 12:12') 
ON DUPLICATE KEY UPDATE 
datefield=IF(datefield < VALUES(datefield), VALUES(datefield), datefield), 
field2=IF(datefield < VALUES(datefield), VALUES(field2), field2) 
+0

은 완전히 작동하지 않습니다. 두 번째 부분은 datefield 만 업데이트합니다. 그러나 모든 필드를 업데이트해야합니다 (+ 필드 1). 이 작업을 수행하는 방법? 덕분에 – user1324936

+0

그것은 이해가되지 않습니다. 당신은 기본 키 무엇입니까? – AndreKR

+0

field1이 기본 키이므로 실제 테이블에이 두 행 이상이 있습니다. 이 행들은 업데이트되지 않는다. – user1324936

관련 문제