Update multiple rows with multiple 'where' clauses for each individual row

后端 未结 1 1718
迷失自我
迷失自我 2020-12-05 07:47

I am trying to update my table like this:

Update MyTable 
SET value     = 1 
WHERE game_id = 1,
      x       =-4,
      y       = 8

SET value     = 2 
WHER         


        
相关标签:
1条回答
  • 2020-12-05 08:18

    give this a try by using CASE

    Update  MyTable 
    SET     value = CASE 
                         WHEN  game_id = 1 AND x = -4 AND y = 8 THEN 1
                         WHEN  game_id = 1 AND x = -3 AND y = 7 THEN 2
                         WHEN  game_id = 2 AND x =  5 AND y = 2 THEN 3
                         ELSE  value 
                    END
    WHERE   game_ID IN (1,2,3) AND  -- the purpose of this WHERE clause
            x IN (-4, -3, 5) AND    -- is to optimize the query by preventing from
            y IN (8,7,2)            -- performing full table scan.
    
    0 讨论(0)
提交回复
热议问题