0

これを機能させることができません。主キー「Id」と「Name」列を持つテーブル「Players」があります。別のテーブル「Bookings」には、「Players.Id」を参照する「PlayerId」列があります。

「Bookings」に「Name」列を追加しました。この列には、プレーヤーの名前の実際のコピーを含める必要があります。

次のステートメントを使用して、予約のすべての名前を設定しようとしています。

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

しかし、私が得るのはエラー1263です:「列はデフォルト値に設定されています;行0のNOTNULL列'Name'にNULLが提供されました。

私は何を間違えましたか?

4

2 に答える 2

1

これを試して:

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

andの間に 1 対 1の関係があることを確認する必要があります (これが意味があると私が考える唯一の方法です)。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 に答える