MySQL - 从子查询更新列

时间:2013-03-05 19:02:19

标签: mysql sql-update subquery

无法让这个工作。我有一个'玩家'表,其中有一个主键'Id',还有一个'Name'列。另一个表'预订'有一个列'PlayerId',它引用了'Players.Id'。

我刚刚在“预订”中添加了一个“名称”列,其中需要包含玩家姓名的实际副本。

我正在尝试使用以下语句设置填充预订中的所有名称:

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

但我得到的是错误1263:“列设置为默认值; NULL提供给NOT NULL列'名称'在第0行。”

我做错了什么?

2 个答案:

答案 0 :(得分:1)

试试这个:

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

您必须确保PlayersBookings之间存在一对一的关系(这是我认为这有道理的唯一方式)。

答案 1 :(得分:1)

为此目的使用MYSQL UPDATE JOIN。这是您需要的查询:

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