MySQL Update Join不会影响所有匹配的行

时间:2011-03-20 17:14:02

标签: mysql join

我正在尝试使用JOIN进行更新。我有两张桌子:

  • player_tracking有一个全部列表 每个用户添加的玩家 跟踪。
  • users是用户列表。每个用户 可以将fsp_f设置为1或0。

我想更新player_tracking中fsp_f设置为1的用户的所有行。这是我的示例代码:

   UPDATE player_tracking AS pt 
LEFT JOIN users AS u ON u.name = pt.user 
      SET pt.newtome = pt.newtome - 1 
   WHERE pt.first = 'Brett' 
     AND pt.last = 'Gardner' 
     AND pt.sport = 'mlb' 
     AND u.fsp_f = 1 

问题在于 22行要更新,但UPDATE查询仅影响2 。为什么?我的查询错了吗?

以下是有关“Brett”“Gardner”“mlb”的player_tracking中的数据: http://pastebin.com/kyf8SCy8

1 个答案:

答案 0 :(得分:2)

我相信,如果您将LEFT JOIN更改为JOIN,则会在users部分使用字段表单WHERE后看到更新的确切行声明。

所以基本上你试图检查u.fsp_f = 1是否存在未加入users的行,因此其值为NULL

此外,您的查询的总体布局似乎也不正确,因为您正在加入SET语句而不是UPDATE部分 - 您指示要更新哪个表