mysql 그것이 존재하는지 여부에 따라 새 레코드를 삽입하거나 필드를 업데이트하는 방법은 무엇입니까?
-
19-09-2019 - |
문제
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
.
제휴하지 않습니다 StackOverflow