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)
);
与我一起,我对MySQL还是比较陌生。这是针对IT201课程的一个项目。这个问题,一个字一个字,就是:MySQL - 更新表格并从其他表格插入数据
Update the music table to set the albumID number to the corresponding album ID number from the new album table. (Hint: use a nested select statement.)
我做这样的东西没有问题,我真的很喜欢这个语言之前,但我似乎无法找出什么我做错了。我试过每次迭代的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之前完成,就像问题提示的那样。
您的更新将无法正常工作。该子选择将返回多行数据,并且不能将('=')结果SET分配给单个字段。您需要查看update的'join'语法... –
您需要在更新语句中进行连接。像更新音乐设置music.albumID = AL.ID_num从音乐内部加入albumList AL上AL.albumName = music.songalbum(因为这是作业,我没有给你确切的查询,只是一个想法) –
我很欣赏这个,这绝对是家庭作业,我喜欢指导老师(和你)没有给出确切的答案。我早些时候尝试了JOIN,但没有奏效,但感谢您让我走上了正确的道路。 :) 也感谢编辑格式@Barranka – KocLobster