MySQL Update Join не влияет на все соответствующие строки - PullRequest
1 голос
/ 20 марта 2011

Я пытаюсь сделать ОБНОВЛЕНИЕ с 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 .Зачем?Мой запрос неверен?

Вот данные, найденные в player_tracking, относящиеся к "Brett", "Gardner" "mlb": http://pastebin.com/kyf8SCy8

1 Ответ

2 голосов
/ 20 марта 2011

Я считаю, что если вы измените LEFT JOIN на JOIN, вы увидите точные строки, которые обновляются, так как вы используете форму поля users в WHERE части инструкции.

поэтому в основном вы пытаетесь проверить, если u.fsp_f = 1, когда могут быть строки, которые не объединяются users и, следовательно, будут иметь значение NULL.

Кроме того, похоже, что общая структура вашего запроса также неверна, поскольку вы присоединяетесь к оператору SET, а не к части UPDATE - где вы указали, какую таблицу обновлять

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...