Pergunta

Estou tentando implementar um sistema de classificação onde mantenho os dois campos a seguir em minha tabela de banco de dados:

classificação (a classificação atual) num_rates (o número de classificações enviadas até agora)

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

as variáveis ​​são do meu código PHP.

Então, basicamente, às vezes, a linha com uniqueCol não existe no banco de dados, então como posso fazer a instrução acima se existir e se não existir, faça algo assim:

INSERT INTO `mytable`
   SET rating=$theRating, num_rates=1, uniqueCol=$uniqueCol
Foi útil?

Solução

Dê uma olhada em INSERIR ...NA ATUALIZAÇÃO DE CHAVE DUPLICADA.

Deve ser algo assim:

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;

Certifique-se de ter um UNIQUE index ou PRIMARY KEY Nas suas uniqueCol.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top