2013-10-26 3 views
1

У меня есть заявление MySQL нижеСоздание заявления обновления с вложенным выберите

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' 

Это прекрасно работает и дает мне желаемые результаты.

Теперь, когда я хочу включить это в инструкцию обновления, я застрял.

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

Try:

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' 

FYI, я бы рекомендовал использовать 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') 
Смежные вопросы