MySQL 从另一个表更新值

标签 mysql sql

如果有帮助的话,这是我的表结构:

enter image description here

 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/

相关文章:

sql - TSQL 内连接

php - 使用数组的数组填充表单选项列表

php - Md5 mysql 行中的所有信息

php - 从数据库发送和检索数据并显示在选择框中,无需刷新 CodeIgniter 中的页面

mysql - 将值插入相关表的 SQL 命令

sql - Azure 流分析 : Get Array Elements by name

mysql - 在 MySQL 中使用左连接时尝试更新表会出现语法错误

php - 上传表单上的图像始终为 NULL

sql - 使用先前记录作为变量计算移动平均线

mysql - 用于获取一个月中某天的每个第一个事件(按日期时间字段)的 SQL 查询