MySQL-从子查询更新列
不能让它工作。我有一个表“Players”,其中有一个主键“Id”,还有一个“Name”列。另一个表“Bookings”有一列“PlayerId”,它引用“Players.Id” 我刚刚在“预订”中添加了一列“姓名”,需要包含球员姓名的真实副本 我尝试使用以下语句填写预订中的所有姓名:MySQL-从子查询更新列,mysql,sql-update,subquery,Mysql,Sql Update,Subquery,不能让它工作。我有一个表“Players”,其中有一个主键“Id”,还有一个“Name”列。另一个表“Bookings”有一列“PlayerId”,它引用“Players.Id” 我刚刚在“预订”中添加了一列“姓名”,需要包含球员姓名的真实副本 我尝试使用以下语句填写预订中的所有姓名: UPDATE Bookings SET Name = (SELECT Name FROM Players WHERE Players.Id=Bookings.PlayerId); 但我得到的是错误1263:“列
UPDATE Bookings SET Name = (SELECT Name FROM Players WHERE Players.Id=Bookings.PlayerId);
但我得到的是错误1263:“列设置为默认值;为第0行的非空列“Name”提供NULL”
我做错了什么?试试这个:
update Bookings, Players
set Bookings.Name = Players.Name
where Bookings.playerId = Players.Id
您必须确保
玩家
和预订
之间存在一对一的关系(这是我认为唯一有意义的方式)。为此使用MYSQL UPDATE JOIN。这是您需要的查询:
UPDATE Bookings
LEFT JOIN Players
ON Players.Id=Bookings.PlayerId
SET Bookings.Name = Players.Name
似乎不起作用,同样的错误。应该说Bookings.PlayerId可以为空。尝试添加WHERE Bookings.PlayerIdNULL作为整体谓词-这消除了错误,但没有设置任何名称列。