> 데이터 베이스 > MySQL 튜토리얼 > INNER JOIN을 사용하여 MySQL 데이터를 올바르게 업데이트하는 방법은 무엇입니까?

INNER JOIN을 사용하여 MySQL 데이터를 올바르게 업데이트하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-08 00:34:11
원래의
757명이 탐색했습니다.

How to Correctly Update MySQL Data Using 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿