Невозможно обновить определенные записи, используя JOIN - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь обновить конкретный competition, используя JOIN. Структура tables выглядит следующим образом:

страна

id | name | iso
 5  Brazil  BR

1012 * Конкурс *:

id | country_id | name     |
 1      5          Serie A
 2      5          Serie B
 3      5          Serie C

competition_seasons

id | competition_id | name  | update_at
 1         1           2019     2019-01-15 00:00:00
 2         1           2018     2019-01-15 00:00:00
 3         1           2017     2019-01-15 00:00:00
 4         2           2019     2019-01-15 00:00:00
 5         2           2018     2019-01-15 00:00:00
 6         2           2017     2019-01-15 00:00:00
 7         3           2019     2019-01-15 00:00:00
 8         3           2018     2019-01-15 00:00:00
 9         3           2017     2019-01-15 00:00:00

Цель установлена ​​update_at на competition_seasons до null. Поэтому я написал этот запрос:

UPDATE country n
    JOIN competition c ON n.id = c.country_id
    JOIN competition_seasons s ON c.id = s.competition_id
    SET s.update_at = NULL
    WHERE n.name = "Brazil"

проблема в том, что запрос ничего не обновляет. Что я не так сделал?

Ответы [ 2 ]

2 голосов
/ 14 марта 2019

Вы должны перечислить таблицу, которую вы собираетесь обновить сначала в вашем запросе. В этом случае мы можем изменить порядок соединений и сначала перечислить таблицу competition_seasons:

UPDATE competition_seasons s     -- target table, listed first
INNER JOIN competition c
    ON c.id = s.competition_id
INNER JOIN country n
    ON n.id = c.country_id
SET
    s.update_at = NULL
WHERE
    n.name = 'Brazil';

Обратите внимание, что порядок соединений здесь не имеет значения, если они все являются внутренними соединениями.

1 голос
/ 14 марта 2019

Цель - установить update_at на Competition_seasons в ноль.

Я бы ожидал

UPDATE competition_seasons cs
    SET update_at = NULL;

Есть ли какое-то другое условие, которое вы не описываете?

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