使用 Inner Join 進行更新的 MySQL 查詢
使用者最近在 MySQL 中嘗試使用 INNER JOIN 執行 UPDATE 語句時遇到錯誤5.0。儘管使用了正確的欄位名稱,還是發生了錯誤。
原始查詢如下:
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
問題在於查詢的語法。若要解決此問題,必須在 UPDATE 語句中明確命名表。更正後的查詢為:
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
使用者也遇到了語法錯誤。為了確認更正後的查詢不包含語法錯誤,創建了以下表進行測試:
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;
使用 MySQL 5.5.8 對這些表執行更正後的查詢時,沒有發生語法錯誤。查詢結果顯示沒有符合或變更的行。
以上是如何使用INNER JOIN正確更新MySQL資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!