Heim > Datenbank > MySQL-Tutorial > Wie aktualisiere ich MySQL-Daten korrekt mit INNER JOIN?

Wie aktualisiere ich MySQL-Daten korrekt mit INNER JOIN?

Barbara Streisand
Freigeben: 2024-12-08 00:34:11
Original
756 Leute haben es durchsucht

How to Correctly Update MySQL Data Using INNER JOIN?

MySQL-Abfrage mit Inner Join für Updates

Ein Benutzer ist kürzlich auf einen Fehler gestoßen, als er versuchte, eine UPDATE-Anweisung mithilfe eines INNER JOIN in MySQL auszuführen 5,0. Der Fehler ist aufgetreten, obwohl korrekte Feldnamen verwendet wurden.

Die ursprüngliche Abfrage lautet wie folgt:

UPDATE  b
SET b.mapx = g.latitude,
    b.mapy = g.longitude
FROM business AS b
INNER JOIN business_geocode g ON b.business_id = g.business_id
WHERE (b.mapx = '' OR b.mapx = 0) AND
      g.latitude > 0
Nach dem Login kopieren

Das Problem liegt in der Syntax der Abfrage. Um es aufzulösen, müssen die Tabellen in der UPDATE-Anweisung explizit benannt werden. Die korrigierte Abfrage lautet:

UPDATE business AS b
INNER JOIN business_geocode AS g ON b.business_id = g.business_id
SET b.mapx = g.latitude,
  b.mapy = g.longitude
WHERE  (b.mapx = '' or b.mapx = 0) and
  g.latitude > 0
Nach dem Login kopieren

Der Benutzer ist außerdem auf einen Syntaxfehler gestoßen. Um zu bestätigen, dass die korrigierte Abfrage keine Syntaxfehler enthält, wurden die folgenden Tabellen zum Testen erstellt:

CREATE TABLE business (business_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, mapx VARCHAR(255), mapy VARCHAR(255)) ENGINE=INNODB;

CREATE TABLE business_geocode (business_geocode_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, business_id INT UNSIGNED NOT NULL, latitude VARCHAR(255) NOT NULL, longitude VARCHAR(255) NOT NULL, FOREIGN KEY (business_id) REFERENCES business(business_id)) ENGINE=INNODB;
Nach dem Login kopieren

Bei der Ausführung der korrigierten Abfrage für diese Tabellen mit MySQL 5.5.8 ist kein Syntaxfehler aufgetreten. Das Abfrageergebnis zeigt, dass keine Zeilen abgeglichen oder geändert wurden.

Das obige ist der detaillierte Inhalt vonWie aktualisiere ich MySQL-Daten korrekt mit INNER JOIN?. 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