반응형
다른 테이블 값을 기반으로하는 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
반응형
'programing' 카테고리의 다른 글
Go 언어에서 런타임에 변수 유형을 확인하는 방법 (0) | 2021.01.17 |
---|---|
Tomcat의 PermGen 공간 오류 (0) | 2021.01.17 |
내 애플리케이션에 AsyncTask 또는 IntentService를 사용해야합니까? (0) | 2021.01.17 |
.net 사용자 지정 구성 enum ConfigurationProperty를 구문 분석하는 대 / 소문자를 구분하지 않는 방법 (0) | 2021.01.16 |
Datatables 경고 (table id = 'example') : 데이터 테이블을 다시 초기화 할 수 없습니다. (0) | 2021.01.16 |