1353998922 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がスペルミスなのは把握しております。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/11/27 15:48:42
  • 終了:2012/11/27 17:34:11

ベストアンサー

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492012/11/27 16:17:23

一例

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にインデックスをつけておくのが望ましく、
データが増えれば増えるほど処理速度が大幅に変わってきます。

id:crzonez

ありがとうございます!!!

コピペで行けました!参考にさせて頂きます。
question_idは既にインデックスついていますが、anwserカラムにもインデックスつけておきます!

2012/11/27 17:35:23

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません