CREATE TABLE IF NOT EXISTS music
(
songname varchar(98) DEFAULT NULL,
songartist varchar(29) DEFAULT NULL,
songalbum varchar(60) DEFAULT NULL,
albumID INT,
songlength decimal(6,2) DEFAULT NULL,
songgenre varchar(18) DEFAULT NULL,
songyear int DEFAULT NULL,
songplays INT DEFAULT NULL
);
CREATE TABLE IF NOT EXISTS albumList
(
ID_num INT NOT NULL AUTO_INCREMENT,
albumName VARCHAR(30),
PRIMARY KEY (ID_num)
);
这是我的IT201课程中的一个项目。一个字一个字的问题是:
更新音乐表格,将albumID号码设置为新专辑表格中相应的专辑ID号码。 (提示:使用嵌套的select语句。)
我之前做过这样的事情没有问题,我真的很喜欢这种语言,但我似乎无法弄清楚我做错了什么。我已经尝试了我能想到的每次UPDATE迭代,我甚至尝试了一些INSERT命令,加入表格......我只是不知道。以下是我最近一次尝试的示例:
UPDATE music
SET
music.albumID = (SELECT albumList.albumName FROM albumList)
显然,我没有从组成数据的任何一个表中包含INSERT语句,我觉得这与这个问题无关。只需了解table.music中大约有1000行条目,table.albumList中大约有200行。
这个想法是,albumList是一个独特专辑名称的表格,而音乐有很多重复的表格。我正在尝试更新music.albumID以对应于albumList.ID_num。我的印象是,没有使用JOIN或外键/引用,因为下一个问题是添加引用这些的外键。所以我假设在此之前可以使用UPDATE和嵌套的SELECTS来完成,正如问题提示的那样。
答案 0 :(得分:0)
以下SQL应该有所帮助,尽管我假设music
上的songalbum包含与albumList上的albumname
相同的数据(由于字段大小不同,这可能不正确)。它将albumID
上的music
设置为ID_Num
albumList
,其中songalbum
与albumName
匹配
UPDATE music SET albumID = (SELECT a.ID_Num FROM albumList a
Join music m on m.songalbum = a.albumName)
答案 1 :(得分:0)
我相信你的家伙'帮忙,我解决了答案。我没有要求JOIN声明,因为我一开始就想到了。这项任务将于今天中午(10分钟)到期,而我的笔记本电脑上的电池已经非常接近死亡,所以我没有太多时间确认我的答案是我想要的,但粗略的检查确认我得到了正确答案(问题提示答案是什么)。我想我会把它发布给其他想要在未来搜索SOF的人:
UPDATE music
SET
albumID = (SELECT albumList.ID_Num FROM albumList WHERE albumList.albumName = music.songalbum)