サブクエリを使用した MySQL UPDATE クエリのエラーの修正
提供されたクエリには、サブクエリを使用した Competition テーブルの NumberOfTeams フィールドの更新が含まれます。ただし、構文の問題により、ユーザーはエラーに遭遇します。
問題は、UPDATE ステートメントの WHERE 句でのエイリアス (a) の誤った使用にあります。 MySQL では、エイリアスはサブクエリ自体のスコープ内でのみ有効です。したがって、WHERE 句でのエイリアス a の参照は無効です。
複数テーブル更新を使用した解決策
この問題を修正するには、複数テーブル更新を使用できます。 。これには、各競技のチーム数を計算するサブクエリを使用して競技テーブルを結合することが含まれます。結合は CompetitionID 列を使用して実行され、更新された値は結合されたサブクエリに基づいて設定されます。
<code class="sql">UPDATE Competition AS C INNER JOIN ( SELECT CompetitionId, COUNT(*) AS NumberOfTeams FROM PicksPoints AS p WHERE UserCompetitionID IS NOT NULL GROUP BY CompetitionId ) AS A ON C.CompetitionID = A.CompetitionID SET C.NumberOfTeams = A.NumberOfTeams;</code>
サブクエリは各競技のチーム数を計算し、それを使用して NumberOfTeams を更新します。メインの競争表の列。このメソッドにより、サブクエリの結果が更新ロジックで正しく参照されるようになります。
例とデモ
この修正されたクエリのデモは、http:// で参照できます。 www.sqlfiddle.com/#!2/a74f3/1。このクエリを実行すると、各競技の正しいチーム数で競技テーブルが正常に更新されます。
以上がサブクエリエラー: エイリアス参照の問題を伴う MySQL UPDATE クエリを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。