重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

テーブルに事前に記載された数値を用い、べき乗の数値の挿入(アップデート)をしたいと考えています。

***********************************************
やりたいこと
***********************************************
テーブル baken

umaban___bekijyo___name
1_______NULL____ HOTARUNOHIKARI
2_______NULL____ MADONOYUKI
3_______NULL____ OPPEKEPE
4_______NULL____ KOTARO


これをUPDATEして、bekijyo欄に「2のumaban乗」の数値を挿入する。

umaban___bekijyo___name
1_________2_____ HOTARUNOHIKARI
2_________4_____ MADONOYUKI
3_________8_____ OPPEKEPE
4________16_____ KOTARO

************************************************


まずは、べき乗を求めるために下記のSELECT文を作成したところうまくいきました。

SELECT uma_code,umaban FROM (SELECT POW( 2, umaban ) AS uma_code,umaban FROM cbf_today_baken WHERE umaban<'11') AS temp1


umaban___uma_code___
1_________2_____
2_________4_____
3_________8_____
4________16_____


あとは、上記の2つをくっ付けるだけです。


UPDATE baken SET bekijyo=(SELECT uma_code FROM
(SELECT uma_code,umaban FROM (SELECT POW( 2, umaban ) AS uma_code,umaban FROM cbf_today_baken WHERE umaban<'11') AS temp1)
WHERE cbf_today_baken.umaban=temp1.umaban)

上記でアップデート可能と思われましたが、エラーになります。

#1248 - Every derived table must have its own alias

どこに誤りがあるのかご教授頂けましたら幸いです。

A 回答 (3件)

No.1です。



いえいえ、単に結果だけほしいならば、
update baken set bekijyo=POW( 2, umaban );
です。
    • good
    • 0
この回答へのお礼

有難うございました。
大変助かりました。

お礼日時:2014/05/18 12:37

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;
    • good
    • 0
この回答へのお礼

有難うございます。
出来ました。
難しく考えすぎたようです。
本当にありがとうございました。

お礼日時:2014/05/12 20:18

ちょっと複雑なのでよう読み切れません。


で、思ったのですが、UPDATEの構文は、
UPDATE テーブル名 set フィールド名=(セットしたい値)
となってなきゃいけないのに、(セットしたい値)を作るところで、テーブル名のbakenのフィールドが条件に出てきてないように見えます。
つまり、(セットしたい値)が複数返ってきてしまってませんか?
    • good
    • 0
この回答へのお礼

bekijyo=(SELECT uma_code FROM という形で、ひとつだけ抽出したつもりでした。
複数は返ってきていないと思います。
今回は、他の方が、大変シンプルな方法での対応策をご教授くださいました。
お時間を取って頂き本当にありがとうございました。
深く御礼申し上げます。

お礼日時:2014/05/12 20:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す