Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-从子查询更新列_Mysql_Sql Update_Subquery - Fatal编程技术网

MySQL-从子查询更新列

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:“列

不能让它工作。我有一个表“Players”,其中有一个主键“Id”,还有一个“Name”列。另一个表“Bookings”有一列“PlayerId”,它引用“Players.Id”

我刚刚在“预订”中添加了一列“姓名”,需要包含球员姓名的真实副本

我尝试使用以下语句填写预订中的所有姓名:

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作为整体谓词-这消除了错误,但没有设置任何名称列。