2016-11-20 1 views
0

TableB의 값으로 업데이트하고 고유 한 id 필드와 일치시키고 WHERE 조건을 추가하려고합니다. 웹을 검색하고 아래 코드를 발견했습니다. 몇 가지 이유로 MYSQL은 구문 오류가 있다고합니다.MYSQL : INNER JOIN 구문 오류로 인한 오류

UPDATE 
    TableA 
SET 
    TableA.field1 = TableB.field1 
FROM 
    TableA 
INNER JOIN 
    TableB 
ON 
    TableA.id = TableB.id 
WHERE 
    TableA.field1 <> '' 
LIMIT 100; 

답변

1

MySQL은 올바른 구문은 다음과 같습니다 참고로

UPDATE TableA INNER JOIN 
     TableB 
     ON TableA.id = TableB.id 
    SET TableA.field1 = TableB.field1 
WHERE TableA.field1 <> ''; 

: 당신이 JOINLIMIT을 사용할 수 없습니다. 당신이 LIMIT를 사용하려면

, 당신은 할 수 있습니다 :

UPDATE TableA 
    SET TableA.field1 = (SELECT TableB.field1 FROM TableB WHERE TableA.id = TableB.id) 
    WHERE TableA.field1 <> '' AND 
      EXISTS (SELECT 1 FROM TableB WHERE TableA.id = TableB.id) 
    LIMIT 100; 

당신이 TableB의 경기는 항상이 알고있는 경우에 (당신은 EXISTS 표현을 남길 수 있습니다 당신이 더 많은 경우 하위 쿼리에 LIMIT 1를 추가 할 수 있습니다. 하나 이상의 일치가 가능합니다.)

항상 ORDER BYLIMIT을 사용하는 것이 좋습니다. 그렇게하면 업데이트중인 행을 제어 할 수 있습니다.