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')

私はこれが正しくないことを知っています。どんな助けでも大歓迎です。

4

2 に答える 2

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') を使用することをお勧めします。これは、特にスキーマをまだ知らない人にとっては、より明確になるためです。

于 2013-10-26T22:35:46.380 に答える
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')
于 2013-10-26T22:36:14.817 に答える