0

无法让这个工作。我有一个表'Players',它有一个主键'Id'和一个'Name'列。另一个表“Bookings”有一个“PlayerId”列,它引用了“Players.Id”。

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

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

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

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

我做错了什么?

4

2 回答 2

1

试试这个:

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

您必须确保和之间存在一对一的关系(这是我认为这是有意义的唯一方法)。PlayersBookings

于 2013-03-05T19:05:17.637 回答
1

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

UPDATE Bookings
LEFT JOIN Players
ON Players.Id=Bookings.PlayerId
SET Bookings.Name = Players.Name
于 2013-03-05T19:10:32.883 回答