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