Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie verwende ich Unterabfragen in MySQL-Update-Anweisungen richtig, um Syntaxfehler zu vermeiden?

Patricia Arquette
Freigeben: 2024-10-26 17:37:30
Original
490 Leute haben es durchsucht

How to Properly Use Subqueries in MySQL Update Statements to Avoid Syntax Errors?

SQL-Unterabfragen in Aktualisierungsabfragen verstehen

Beim Aktualisieren von Daten in MySQL ist es häufig erforderlich, mithilfe von Unterabfragen auf Werte aus anderen Tabellen zu verweisen. Es können jedoch Fehler auftreten, wenn die Unterabfrage nicht ordnungsgemäß mit der äußeren Aktualisierungsanweisung verknüpft ist.

Betrachten Sie die folgende 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
Nach dem Login kopieren

Diese Abfrage schlägt mit der Fehlermeldung fehl:

#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
Nach dem Login kopieren

Beheben des Fehlers

Der Fehler tritt auf, weil die innere Unterabfrage nicht mit der where-Klausel in der äußeren Update-Anweisung zusammenhängt. Die Where-Bedingung gilt für die Zieltabelle (Competition), bevor die Unterabfrage ausgeführt wird. Um dieses Problem zu beheben, kann ein Multi-Table-Update eingesetzt werden:

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
Nach dem Login kopieren

Dieses Multi-Table-Update verbindet die Competition-Tabelle (Alias ​​C) ordnungsgemäß mit der Unterabfrage (Alias ​​A) und stellt so sicher, dass die Die Werte der Unterabfrage stehen zum Filtern in der äußeren Aktualisierungsanweisung zur Verfügung.

Eine Live-Demonstration der korrigierten Abfrage finden Sie im folgenden SQL Fiddle: http://www.sqlfiddle.com/#!2/a74f3/ 1

Das obige ist der detaillierte Inhalt vonWie verwende ich Unterabfragen in MySQL-Update-Anweisungen richtig, um Syntaxfehler zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!