如果有帮助的话,这是我的表结构:
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 从另一个表更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58759449/