- ベストアンサー
サブクエリでのアップデート(MySQL5.5)のエラーについて
- MySQL5.5でサブクエリを使用してテーブルのアップデートを行いたいと考えていますが、エラーが発生しています。
- テーブルに事前に記載された数値を使用してべき乗の数値を挿入するために、サブクエリを使用しています。
- しかし、SQLの文法エラーが発生しており、エラーメッセージによると、派生テーブルごとにエイリアスを設定する必要があるとのことです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 いえいえ、単に結果だけほしいならば、 update baken set bekijyo=POW( 2, umaban ); です。
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
bakenテーブルとcbf_today_bakenテーブルの相関関係がよくわかりません 単純にbakenテーブルのumabanが11未満ならbekijyoを2のumaban乗にしたいだけならこんな感じ? create table baken(umaban int not null,bekijyo int null,name varchar(20)); insert into baken values(1,NULL,'HOTARUNOHIKARI'),(2,NULL,'MADONOYUKI'),(3,NULL,'OPPEKEPE'),(4,NULL,'KOTARO'),(10,NULL,'hoge'),(11,NULL,'fuga'); update baken set bekijyo=POW( 2, umaban ) where umaban<11;
お礼
有難うございます。 出来ました。 難しく考えすぎたようです。 本当にありがとうございました。
- NNori
- ベストアンサー率22% (377/1669)
ちょっと複雑なのでよう読み切れません。 で、思ったのですが、UPDATEの構文は、 UPDATE テーブル名 set フィールド名=(セットしたい値) となってなきゃいけないのに、(セットしたい値)を作るところで、テーブル名のbakenのフィールドが条件に出てきてないように見えます。 つまり、(セットしたい値)が複数返ってきてしまってませんか?
お礼
bekijyo=(SELECT uma_code FROM という形で、ひとつだけ抽出したつもりでした。 複数は返ってきていないと思います。 今回は、他の方が、大変シンプルな方法での対応策をご教授くださいました。 お時間を取って頂き本当にありがとうございました。 深く御礼申し上げます。
お礼
有難うございました。 大変助かりました。