如果行存在,则更新MySQL,否则插入

Cli*_*int 3 mysql

INSERT INTO GameScoreTotal (
    `GameName`
    , `OverallScore`
    , `GraphicsScore`
    , `StoryScore`
    , `GameplayScore`
    , `TimeScore`
    )
VALUES (
    'HomeFront'
    , '1'
    , '1'
    , '1'
    , '1'
    , '5'
    )
WHERE GameName = 'HomeFront'
    ON DUPLICATE KEY

UPDATE OverallScoreTotal = OverallScoreTotal + '1'
    , GraphicsTotal = GraphicsTotal + '1'
    , StoryTotal = StoryTotal + '1'
    , GameplayTotal = GameplayTotal + '1'
    , TimeTotal = TimeTotal + '1'
    , RatingCount = RatingCount + 1;
Run Code Online (Sandbox Code Playgroud)

我正在尝试更新GameScoreTotal如果我们有其他东西,否则插入.有任何想法吗?

Joh*_*Woo 6

  • 你需要在GameName名称上定义键,(唯一或主键应该这样做)
  • WHERE从insert语句中删除子句

查询,

INSERT INTO GameScoreTotal ( `GameName` , `OverallScore` , `GraphicsScore`
                           , `StoryScore` , `GameplayScore`  , `TimeScore` )
VALUES ( 'HomeFront' , 1  , 1 , 1 , 1 , 5 )
    ON DUPLICATE KEY
UPDATE OverallScoreTotal = OverallScoreTotal + 1
     , GraphicsTotal = GraphicsTotal + 1
     , StoryTotal = StoryTotal + 1
     , GameplayTotal = GameplayTotal + 1
     , TimeTotal = TimeTotal + 1
     , RatingCount = RatingCount + 1;
Run Code Online (Sandbox Code Playgroud)

资源