업데이트를 위해 내부 조인을 사용한 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!