人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Mysqlの命令文作成で完全に詰まってしまって途方に暮れています。

添付画像にあるように、テーブルAのanwserの値とテーブルBのuser_answerの値が同じ場合に、テーブルBのanswer_flagを0から1に変更するというMYSQLの命令文を書きたいのですが、上手く行きません。。。

UPDATE tbl_quiz_log
SET answer_flag = 1
WHERE user_answer = ANY(
SELECT tbl_question.anwser
FROM tbl_question
INNER JOIN tbl_quiz_log ON tbl_quiz_log.question_id = tbl_question.question_id
)

何が間違っているのでしょうか?

どなたかお力をお貸し頂けませんでしょうか?

どうぞよろしくお願い致しますm(_ _)m


●補足
※1 キャプチャー画像のカラムは一部のカラムのみ表示している状態です。

※2 ちなみに、テーブルAのanswerがスペルミスなのは把握しております。

1353998922
●拡大する

●質問者: crzonez
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● うぃんど
ベストアンサー

一例

UPDATE tbl_quiz_log TB
SET answer_flag = 1
WHERE EXISTS(
 SELECT *
 FROM tbl_question TA
 WHERE TA.question_id = TB.question_id
 AND TA.anwser = TB.user_answer
);

tbl_questionのquestion_idとanwserにインデックスをつけておくのが望ましく、
データが増えれば増えるほど処理速度が大幅に変わってきます。


crzonezさんのコメント
ありがとうございます!!! コピペで行けました!参考にさせて頂きます。 question_idは既にインデックスついていますが、anwserカラムにもインデックスつけておきます!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ