2013-10-26 26 views
1

update語句下面我有創建從嵌套查詢

select c11 as genre, t3.strGenre, t2.idGenre t2idGenre, t1.idMVideo 
from musicvideo t1 
join genrelinkmusicvideo t2 
on t2.idMVideo=t1.idMVideo 
join genre t3 
on t3.idGenre=t2.idGenre 
where not (c11=strGenre) and genre='Alternative Rock' 

這工作得很好,給我希望的結果一個MySQL聲明。

現在,當我想把它放到更新聲明中時,我卡住了。

update t2 
set idGenre=62 
where (select c11, t3.strGenre, t2.idGenre t2idGenre 
from musicvideo t1 
join genrelinkmusicvideo t2 
on t2.idMVideo=t1.idMVideo 
join genre t3 
on t3.idGenre=t2.idGenre 
where not (c11=strGenre) and genre='Alternative Rock') 

我知道這是不正確的。任何幫助,將不勝感激。

回答

2

嘗試:

update genrelinkmusicvideo t2 
    join musicvideo t1 
     on t2.idMVideo = t1.idMVideo 
    join genre t3 
     on t3.idGenre = t2.idGenre 
set t2.idGenre = 62 
where c11 <> strGenre and genre = 'Alternative Rock' 

僅供參考,我會建議使用table_alias.column(例如t3.genre = 'Alternative Rock'),因爲它使事情更加清晰,特別是對於那些誰不知道的模式了。

0

你可以嘗試:

update genrelinkmusicvideo 
set idGenre=62 
where idGenre IN (select t2.idGenre 
from musicvideo t1 
join genrelinkmusicvideo t2 
on t2.idMVideo=t1.idMVideo 
join genre t3 
on t3.idGenre=t2.idGenre 
where not (c11=strGenre) and genre='Alternative Rock')