2013-03-05 5 views
0

Невозможно заставить это работать. У меня есть таблица «Игроки», у которой есть первичный ключ «Идентификатор» и, среди прочих, столбец «Имя». В другой таблице «Заказы» есть столбец «PlayerId», который ссылается на «Players.Id».MySQL - обновление столбца из подзапроса

Я только что добавил колонку «Имя» в «Резервирование», которая должна содержать фактическую копию имени игрока.

Я пытаюсь установить заполнить все имена в Бронирования, используя следующее заявление:

UPDATE Bookings SET Name = (SELECT Name FROM Players WHERE Players.Id=Bookings.PlayerId); 

но то, что я получаю ошибку 1263: «Колонка устанавливается значение по умолчанию, NULL поставляется NOT NULL в столбце«Имя 'в строке 0 ".

Что я сделал не так?

ответ

1

Попробуйте это:

update Bookings, Players 
set Bookings.Name = Players.Name 
where Bookings.playerId = Players.Id 

Вы должны быть уверены, что есть один к одному соотношение между Players и Bookings (это единственный способ, которым я думаю, что это имеет смысл).

+0

Но это действительно работает! Благодарю. – nmw01223

1

Используйте MYSQL UPDATE JOIN для этой цели. Это необходимый вам запрос:

UPDATE Bookings 
LEFT JOIN Players 
ON Players.Id=Bookings.PlayerId 
SET Bookings.Name = Players.Name 
+0

Кажется не работает, такая же ошибка. Должен сказать, что Bookings.PlayerId может быть NULL. Попробовал добавить WHERE Bookings.PlayerId <> NULL как общий предикат - который избавился от этой ошибки, но тогда ни один столбец имен не был установлен вообще. – nmw01223

Смежные вопросы