sql >> データベース >  >> RDS >> Mysql

UPDATEステートメントでJOINを使用するにはどうすればよいですか?

    これでうまくいくと思います:

    UPDATE QandA AS ans1
    JOIN QandA AS ans2 ON ans2.related = ans1.related
    JOIN QandA AS ques ON ans2.related = ques.id
    SET ans1.accepted = (ans1.id = :answer_id)
    WHERE ques.author_id = :session_id
    AND ans2.id = :answer_id
    

    最初のJOIN 受け入れられている回答と同じ質問に対する回答にフィルターをかけます。

    2番目のJOIN その質問を見つけます。

    WHERE 句は、更新を特定の作成者の質問にのみ制限し、受け入れられる回答IDを指定します。

    デモ

    追加の条件として、

    を追加します
    AND (ques.free IS NULL or ans1.accepted IS NULL)
    

    WHEREへ 句。 ques.free IS NULL 自由な質問に一致し、ans1.accepted IS NULL 回答が受け入れられない質問に一致します(回答が受け入れられると、その質問に対する他のすべての回答がaccepted = 0になるためです。 。

    回答が受け入れられない質問のデモ
    無料の質問のデモ




    1. SQLiteでチェック制約を有効/無効にする方法

    2. 特定の行番号から始まるMySQLの行を選択するにはどうすればよいですか?

    3. Oracleインデックスを選択して最適化する方法は?

    4. DBCC CLONEDATABASEを使用して、SQL Server2014SP2のユーザーデータベースのスキーマと統計のみのコピーを生成する