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

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

Linda Hamilton
Linda Hamilton원래의
2024-11-20 11:29:02808검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.