UPDATE songs
-> SET artist_id =
-> (SELECT artist_id FROM artists WHERE artists.name = songs.artist);
Query OK, 0 rows affected (0.00 sec)
Rows matched: 27 Changed: 0 Warnings: 0
我的代码保持匹配的行,但永远不会改变实际表中的任何内容
有什么想法为什么不起作用?
最佳答案
此代码基本上看起来正确。我将其写为:
UPDATE songs s
SET artist_id = (SELECT a.artist_id
FROM artists a
WHERE a.name = s.artist
);
如果此查询返回错误,则
artist_id
不在artists
中。您可能需要a.id
。如果该查询没有更新任何内容,则
artist_id
已经具有相同的值。关于mysql - MySQL从另一个表更新值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58759449/