首页 > 解决方案 > 如何根据 SQL 中另一个表的值将值插入表中?

问题描述

所以在 SQL 中,我有一个表专辑,它有(album_id,album_name,year)我也有一个表歌曲,有(song_id,song_name,album_name)。

我使用了一个 alter table 语句向名为 album_id 的歌曲添加一列

对于属于专辑的每首歌曲,我想将其各自的专辑 ID 添加到该行

我不知道该怎么做。我已经搞定了

UPDATE songs
SET songs.album_id = (select albums.album_id FROM albums WHERE songs.album_name = albums.album_name);

但是,该子查询返回多行并给我一个错误。我还尝试distinct在子查询中添加并在子查询中添加group byalbums.album_id。

歌曲表中有多首歌曲属于同一张专辑。每个专辑在专辑表中只出现一次。

标签: mysqlsqldatabasesql-update

解决方案


如果它始终是相同的 album_id,则将其限制为一个

UPDATE songs
SET songs.album_id = (select albums.album_id 
                      FROM albums 
                      WHERE songs.album_name = albums.album_name 
                      LIMIT 1);

只有在您想向描述字段添加更多信息时,分组才有意义


推荐阅读