无法让这个工作。我有一个'玩家'表,其中有一个主键'Id',还有一个'Name'列。另一个表'预订'有一个列'PlayerId',它引用了'Players.Id'。
我刚刚在“预订”中添加了一个“名称”列,其中需要包含玩家姓名的实际副本。
我正在尝试使用以下语句设置填充预订中的所有名称:
UPDATE Bookings SET Name = (SELECT Name FROM Players WHERE Players.Id=Bookings.PlayerId);
但我得到的是错误1263:“列设置为默认值; NULL提供给NOT NULL列'名称'在第0行。”
我做错了什么?
答案 0 :(得分:1)
试试这个:
update Bookings, Players
set Bookings.Name = Players.Name
where Bookings.playerId = Players.Id
您必须确保Players
和Bookings
之间存在一对一的关系(这是我认为这有道理的唯一方式)。
答案 1 :(得分:1)
为此目的使用MYSQL UPDATE JOIN。这是您需要的查询:
UPDATE Bookings
LEFT JOIN Players
ON Players.Id=Bookings.PlayerId
SET Bookings.Name = Players.Name