根据同一个表中的另一行更新行

时间:2013-03-18 20:58:10

标签: mysql

我有一张看起来像这样的桌子

id   |game_id| player_id| winner 
----------------------------
 1   |   1   |  1       |    
 2   |   1   |  2       |
 3   |   1   |  3       |
 4   |   1   |  4       |

我有一个game_id和赢家ID,我想将获胜者更新为1,将失败者更新为0;

UPDATE tournament SET winner = '1' WHERE game_id= 1 AND  player_id = 1

然后

UPDATE tournament SET winner = '0' WHERE game_id= 1 AND  player_id != 1

输出

id   |game_id| player_id| winner 
----------------------------
 1   |   1   |  1       |    1
 2   |   1   |  2       |    0
 3   |   1   |  3       |    0
 4   |   1   |  4       |    0

任何人都可以告诉我如何使用单一查询来完成

2 个答案:

答案 0 :(得分:2)

UPDATE tournament SET winner = IF(player_id = 1, '1', '0') WHERE game_id= 1

答案 1 :(得分:0)

查询

<强> SQLFIDDLEExample

UPDATE tournament 
SET winner = CASE WHEN player_id = 1
                  THEN '1'
                  ELSE '0'END
WHERE game_id= 1