サブクエリを使用した MySQL 更新クエリの「エラー #1064: SQL 構文にエラーがあります」を修正する方法

Patricia Arquette
リリース: 2024-10-26 12:06:29
オリジナル
665 人が閲覧しました

How to Fix

サブクエリを使用した MySQL 更新クエリのトラブルシューティング

サブクエリを使用した MySQL 更新クエリでは、次のようなエラーが発生する場合があります。

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'a where a.CompetitionID = Competition.CompetitionID' at line 8
ログイン後にコピー

クエリ:

Update Competition
Set Competition.NumberOfTeams =
(
SELECT count(*) as NumberOfTeams
FROM PicksPoints
where UserCompetitionID is not NULL
group by CompetitionID
) a
where a.CompetitionID =  Competition.CompetitionID
ログイン後にコピー

問題:

外側の where 句が原因でエラーが発生しますupdate ステートメント (a.CompetitionID = Competition.CompetitionID) を内部サブクエリにリンクすることはできません。 where フィルターは、内部サブクエリが実行される前に、更新中のテーブル (競合) に適用されます。

解決策:

この問題を解決するには、複数テーブルの更新を使用します。 :

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
ログイン後にコピー

説明:

このクエリは、Competition テーブル (C というエイリアス) を、次のチームの数を計算するサブクエリ (A というエイリアス) と結合します。それぞれの競技。参加条件は CompetitionID にあります。次に、更新ステートメントは、Competition テーブルの NumberOfTeams 列をサブクエリからの計算値に設定します。

デモ:

この更新されたクエリを SQL Fiddle で試すことができます。 : http://www.sqlfiddle.com/#!2/a74f3/1

以上がサブクエリを使用した MySQL 更新クエリの「エラー #1064: SQL 構文にエラーがあります」を修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!