仅当得分>时更新语句目前得分

时间:2018-04-23 13:41:56

标签: php sql if-statement

我正在尝试在PHP中执行的查询中创建更新语句。虽然我没有太多的PHP经验,但我试过了。

这就是我现在所拥有的:

$query = "INSERT INTO scores VALUES ('$uid', '$name', '$score') 
          ON DUPLICATE KEY UPDATE 'score' = '$score';";

如何在此创建if语句?我已经尝试了这个:

$query = "INSERT INTO scores VALUES ('$uid', '$name', '$score') 
          ON DUPLICATE KEY UPDATE 'score' = if('$score' > 'score', '$score', 'score');";

1 个答案:

答案 0 :(得分:0)

你可以这样做:

INSERT INTO scores (uid, name, score)
    VALUES (?, ?, ?)
    ON DUPLICATE KEY UPDATE score = (case when VALUES(score) > score THEN VALUES(score) ELSE score END);

注意:

  • 列出insert的所有列。随着时间的推移,这将为您带来许多悲伤。
  • 学会正确使用参数。 ?是什么 - 参数占位符。
  • VALUES()允许您检索要插入的值。方便一般;当你有多行时必须这样做。
  • 使用GREATEST()很有吸引力,但如果值为NULL,则返回NULL