programing

다른 테이블 값을 기반으로하는 MySQL 업데이트 테이블

coolbiz 2021. 1. 17. 11:01
반응형

다른 테이블 값을 기반으로하는 MySQL 업데이트 테이블


두 개의 테이블이 있습니다.

여기 내 첫 번째 테이블이 있습니다.

ID      SUBST_ID        CREATED_ID
1       031938          TEST123
2       930111          COOL123
3       000391          THIS109
4       039301          BRO1011
5       123456          COOL938
...     ...             ...

이것은 제 두 번째 테이블입니다.

ID      SERIAL_ID       BRANCH_ID
1       039301          NULL
2       000391          NULL
3       123456          NULL
...     ...             ...

첫 번째 테이블의 데이터를 사용하여 두 번째 테이블의 모든 행을 업데이트하는 방법이 필요합니다.

이 모든 작업을 하나의 업데이트 쿼리로 수행해야합니다.

SUBST_ID와 SERIAL_ID가 모두 일치하므로 첫 번째 테이블에서 created_id를 가져 와서 두 번째 테이블에 삽입해야합니다.

따라서 두 번째 테이블은 다음과 같습니다.

ID      SERIAL_ID       BRANCH_ID
1       039301          BRO1011
2       000391          THIS109
3       123456          COOL938
...     ...             ...

여러분의 도움과지도에 감사드립니다.


UPDATE TABLE2
       JOIN TABLE1
       ON TABLE2.SERIAL_ID = TABLE1.SUBST_ID
SET    TABLE2.BRANCH_ID = TABLE1.CREATED_ID;

작업을 자주 반복 해야 하고 시간절약 하려면 Tom의 답변 외에도 다음을 수행 할 수 있습니다.

UPDATE TABLE1
       JOIN TABLE2
       ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET    TABLE2.BRANCH_ID = TABLE1.CREATED_ID
WHERE TABLE2.BRANCH_ID IS NULL

나는 이것이 효과가 있다고 생각한다

UPDATE secondTable
JOIN firsTable ON secondTable.SERIAL_ID = firsTable.SUBST_ID
SET BRANCH_ID = CREATED_ID

UPDATE TABLE2
       JOIN TABLE1
       ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET    TABLE2.BRANCH_ID = TABLE1.CREATED_ID 
WHERE TABLE2.BRANCH_ID IS NULL or TABLE2.BRANCH_ID='';

사용 INNER JOIN:

UPDATE TABLE1
INNER JOIN TABLE2 ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET TABLE2.BRANCH_ID = TABLE1.CREATED_ID;

아래와 같은 또 다른 대안 : 여기에 WHERE대신 절을 사용하고 있습니다.JOIN

UPDATE 
    TABLE1,
    TABLE2
WHERE
    TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET 
    TABLE2.BRANCH_ID = TABLE1.CREATED_ID;

이것도 사용할 수 있습니다.

update TABLE1 set BRANCH_ID = ( select BRANCH_ID from TABLE2 where TABLE1.SUBST_ID = TABLE2.SERIAL_ID)

but with my experience I can say that this way is so slow and not recommend it!

ReferenceURL : https://stackoverflow.com/questions/12394506/mysql-update-table-based-on-another-tables-value

반응형