在WHERE中使用多个值进行更新

时间:2013-08-12 05:06:09

标签: mysql sql sql-update where-clause multiple-columns

当符合这两个条件时,我需要更新数据库中的字段 以下是我的代码
 这是一个适用于WHERE条件

中的一个值的查询
query2 = "UPDATE  Game_mygame 
          SET game_played = "+str(set_game_played)+" 
          WHERE home_teamID = "+str(i.home_teamID) 

但我需要匹配WHERE中的两个值,我正在尝试以下

query2 = "UPDATE  Game_mygame 
              SET game_played = "+str(set_game_played)+" 
              WHERE home_teamID = "+str(i.home_teamID)+ 
                    "AND away_teamID = "+str(i.away_teamID)  

但是这个给出了语法错误

请建议我在哪里做错了

2 个答案:

答案 0 :(得分:2)

我认为首先WHERE条件和AND之间没有空格。因此,它会使您的查询像WHERE home_teamID=xyzAND而不是WHERE home_teamID=xyz AND。所以你需要在AND之前给出一个额外的空格(与WHERE之前给出的相同)

query2 = "UPDATE  Game_mygame 
              SET game_played = "+str(set_game_played)+
              " WHERE home_teamID = "+str(i.home_teamID)+ 
              "AND away_teamID = "+str(i.away_teamID)
           ---^^--- Space is missing here

所以试试这个:

query2 = "UPDATE  Game_mygame 
              SET game_played = "+str(set_game_played)+
              " WHERE home_teamID = "+str(i.home_teamID)+ 
              " AND away_teamID = "+str(i.away_teamID)

答案 1 :(得分:1)

.类似

的Concat
query2 = "UPDATE  Game_mygame 
          SET game_played = ".str(set_game_played)." 
          WHERE home_teamID = '". str(i.home_teamID) ."'
          AND away_teamID = '".str(i.away_teamID)."'";  

并且 @Preet Sangha 表示我们可以使用没有引号的ID,如

query2 = "UPDATE  Game_mygame 
          SET game_played = ".str(set_game_played)." 
          WHERE home_teamID = ". str(i.home_teamID) ."
          AND away_teamID = ".str(i.away_teamID);