mysql 그것이 존재하는지 여부에 따라 새 레코드를 삽입하거나 필드를 업데이트하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/2036794

문제

DB 테이블에 다음 두 필드를 유지하는 등급 시스템을 구현하려고합니다.

등급 (현재 등급) NUM_RATES (지금까지 제출 된 등급 수)

UPDATE `mytable`
   SET rating=((rating*num_rates)+$theRating)/num_rates, num_rates=num_rates+1
 WHERE uniqueCol='$uniqueCol'

변수는 내 PHP 코드에서 나온 것입니다.

따라서 기본적으로 때때로 Iliquecol이있는 행은 DB에 존재하지 않으므로, 존재하는 경우 위의 진술을 어떻게 수행 할 수 있습니까?

INSERT INTO `mytable`
   SET rating=$theRating, num_rates=1, uniqueCol=$uniqueCol
도움이 되었습니까?

해결책

살펴보십시오 중복 키 업데이트에 삽입 ....

그런 것 같아야합니다.

INSERT INTO mytable (rating, num_rates, uniqueCol)
VALUES ($theRating, 1, $uniqueCol)
ON DUPLICATE KEY UPDATE
  rating=((rating*num_rates)+$theRating)/num_rates,
  num_rates=num_rates+1;

a UNIQUE index 또는 PRIMARY KEY 너의 uniqueCol.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top