Heim  >  Artikel  >  Datenbank  >  Wie behebe ich „Fehler Nr. 1064: Sie haben einen Fehler in Ihrer SQL-Syntax“ in der MySQL-Update-Abfrage mit Unterabfrage?

Wie behebe ich „Fehler Nr. 1064: Sie haben einen Fehler in Ihrer SQL-Syntax“ in der MySQL-Update-Abfrage mit Unterabfrage?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-26 12:06:29667Durchsuche

How to Fix

Fehlerbehebung bei einer MySQL-Update-Abfrage mit einer Unterabfrage

Bei einer MySQL-Update-Abfrage mit einer Unterabfrage kann ein Fehler wie dieser auftreten:

#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

Abfrage:

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

Problem:

Der Fehler entsteht durch die where-Klausel in der äußeren Die Update-Anweisung (wobei a.CompetitionID = Competition.CompetitionID) kann nicht mit der inneren Unterabfrage verknüpft werden. Der Where-Filter wird auf die zu aktualisierende Tabelle (Konkurrenz) angewendet, bevor die innere Unterabfrage ausgeführt wird.

Lösung:

Um dieses Problem zu beheben, verwenden Sie eine Aktualisierung mehrerer Tabellen :

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

Erklärung:

Diese Abfrage verknüpft die Wettbewerbstabelle (Alias ​​C) mit einer Unterabfrage (Alias ​​A), die die Anzahl der Teams berechnet jeden Wettbewerb. Die Beitrittsbedingung ist auf CompetitionID. Anschließend setzt die Aktualisierungsanweisung die Spalte „NumberOfTeams“ in der Competition-Tabelle auf den berechneten Wert aus der Unterabfrage.

Demo:

Sie können diese aktualisierte Abfrage auf SQL Fiddle ausprobieren : http://www.sqlfiddle.com/#!2/a74f3/1

Das obige ist der detaillierte Inhalt vonWie behebe ich „Fehler Nr. 1064: Sie haben einen Fehler in Ihrer SQL-Syntax“ in der MySQL-Update-Abfrage mit Unterabfrage?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn