【问题标题】:MySQL - updating column from a subqueryMySQL - 从子查询更新列
【发布时间】:2013-03-05 19:02:18
【问题描述】:

无法让它工作。我有一个表'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 列‘名称’”。

我做错了什么?

【问题讨论】:

    标签: mysql sql-update subquery


    【解决方案1】:

    试试这个:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 似乎不起作用,同样的错误。应该说Bookings.PlayerId可以为NULL。尝试添加 WHERE Bookings.PlayerIdNULL 作为整体谓词 - 消除了错误,但没有设置任何名称列。
      猜你喜欢
      • 2021-11-11
      • 2019-01-03
      • 2012-07-20
      • 2016-05-03
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      • 2015-01-25
      相关资源
      最近更新 更多