bestsource

MariaDB의 열 값을 다른 테이블에서 바꾸기

bestsource 2023. 9. 11. 21:56
반응형

MariaDB의 열 값을 다른 테이블에서 바꾸기

다른 여러 스레드에서 다음과 같은 토막글이 있습니다.

UPDATE assets SET asset_tag=tmp_x.new FROM tmp_x WHERE asset_tag=tmp_x.old;

assets내 테이블은 다음을 포함하고 있습니다.asset_tag기둥.

tmp_x두 개의 int 열을 포함합니다.old그리고.new.

에서 기존 값을 업데이트하려고 합니다.asset_tag열을 통해tmp_xvalues, 그러나 MariaDB에서는 위 명령어가 구문 오류를 반환합니다.지금까지 계속된 연구는 모든 것을 다음과 같이 밝혀냈습니다.INNER JOIN테이블을 하나로 묶는 것이 좀 과한 것 같습니다.

의 예.assets:

asset_tag   id
12345       1
12346       2
12347       3

그리고 부터tmp_x:

old     new
12345   88881
12346   88882

다음의 모든 값이 아닙니다.asset_tags에 있습니다tmp_x, 그래서 몇 개만 바꿀 겁니다.

힌트 미리 감사드립니다!

update assets as tgt
inner join tmp_x as src on tgt.asset_tag=src.old
set tgt.asset_tag=src.new

몇 번의 시도 끝에 데이터베이스를 삭제했지만, 충분히 장황하지는 않았던 것으로 드러났습니다.작업 명령은 다음과 같습니다.

UPDATE assets 
SET asset_tag = (SELECT new FROM tmp_x WHERE old=asset_tag) 
WHERE asset_tag = (SELECT old FROM tmp_x WHERE old=asset_tag);

좀 더 우아한 방법이 있다면, 저에게 알려주세요!

언급URL : https://stackoverflow.com/questions/47517450/replacing-column-values-in-mariadb-from-other-table

반응형