> 데이터 베이스 > MySQL 튜토리얼 > Self-Join을 사용하여 테이블 내에서 데이터를 복사하는 방법은 무엇입니까?

Self-Join을 사용하여 테이블 내에서 데이터를 복사하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-20 11:29:02
원래의
878명이 탐색했습니다.

How to Copy Data Within a Table Using Self-Join?

테이블 내에서 데이터 복사

관계형 데이터베이스에서는 동일한 테이블 내의 한 행에서 다른 행으로 데이터를 복사하는 것이 유용한 경우가 많습니다. 이 문서에서는 동일한 테이블에 있는 다른 행의 데이터를 사용하여 행 값을 업데이트하는 방법을 살펴봅니다.

다음 구조의 테이블을 생각해 보세요.

ID NAME VALUE
1 Test VALUE1
2 Test2 VALUE2
1 Test2
4 Test
1 Test3 VALUE3

목표는 동일한 'NAME'이 있는 다른 행에서 값을 가져와 'VALUE' 열에 누락된 값이 있는 행의 값을 가져옵니다. 예상 출력:

ID NAME VALUE
1 Test VALUE1
2 Test2 VALUE2
1 Test2 VALUE2
4 Test VALUE1
1 Test3 VALUE3

솔루션에는 셀프 조인이 포함됩니다. null이 아닌 행만 저장하는 임시 테이블을 사용하면 원래 테이블을 업데이트할 수 있습니다.

UPDATE data_table t, (SELECT DISTINCT ID, NAME, VALUE
                        FROM data_table
                       WHERE VALUE IS NOT NULL AND VALUE != '') t1
   SET t.VALUE = t1.VALUE
 WHERE t.ID = t1.ID
   AND t.NAME = t1.NAME
로그인 후 복사

설명:

  • 하위 쿼리(SELECT DISTINCT ID, NAME, VALUE...)는 null이 아닌 값만 사용하여 임시 테이블 t1을 생성합니다. 행.
  • 그런 다음 UPDATE 문은 t를 ID 및 NAME 열의 t1과 조인합니다.
  • 값이 일치하고 t의 VALUE 열이 null인 경우 다음의 해당 VALUE로 업데이트됩니다. t1.

업데이트됨 쿼리:

제공된 솔루션을 구체화하여 원하는 결과를 얻을 수 있습니다.

UPDATE data_table dt1, data_table dt2 
SET dt1.VALUE = dt2.VALUE 
WHERE dt1.NAME = dt2.NAME AND dt1.VALUE = '' AND dt2.VALUE != '' 
로그인 후 복사

위 내용은 Self-Join을 사용하여 테이블 내에서 데이터를 복사하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿