반응형
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_x
values, 그러나 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
반응형
'bestsource' 카테고리의 다른 글
SQL 트랜잭션 오류:현재 트랜잭션을 커밋할 수 없으며 로그 파일에 쓰는 작업을 지원할 수 없습니다. (0) | 2023.09.11 |
---|---|
xlib의 XNextEvent 차단을 중지하는 방법 (0) | 2023.09.11 |
liquibebase를 사용하여 DB의 기존 행을 업데이트 할 수 있습니까? (0) | 2023.09.11 |
열 이름의 공백 제거 또는 바꾸기 (0) | 2023.09.11 |
memcpy 0바이트를 상수 변수로 - 정의되지 않은 동작? (0) | 2023.09.11 |