programing

같은 테이블의 다른 행의 데이터로 행 업데이트

minecode 2022. 12. 20. 21:36
반응형

같은 테이블의 다른 행의 데이터로 행 업데이트

이렇게 생긴 테이블이 있는데

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

'Test2' 및 'Test' 값을 'NAME'이 같은 'VALUE' 열의 다른 행 데이터로 업데이트하는 방법을 찾고 있습니다(ID는 여기서 고유하지 않으며 ID와 NAME의 복합 키가 행을 고유하게 만듭니다).예를 들어, 다음과 같은 출력이 필요합니다.

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

다른 테이블에 있으면 괜찮겠지만, 같은 NAME 값으로 현재 테이블 내의 다른 행을 참조할 수 있을지 고민입니다.

갱신하다

manji 쿼리를 수정한 후 작업 솔루션에 사용한 쿼리는 다음과 같습니다.모두 감사합니다!

UPDATE data_table dt1, data_table dt2 
SET dt1.VALUE = dt2.VALUE 
WHERE dt1.NAME = dt2.NAME AND dt1.VALUE = '' AND dt2.VALUE != '' 

이것을 시험해 보세요.

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

제 차례입니다.

UPDATE test as t1 
    INNER JOIN test as t2 ON 
        t1.NAME = t2.NAME AND 
        t2.value IS NOT NULL 
SET t1.VALUE = t2.VALUE;

편집: 불필요한 부분을 제거했습니다.t1.id != t2.id조건.

Update MyTable
Set Value = (
                Select Min( T2.Value )
                From MyTable As T2
                Where T2.Id <> MyTable.Id
                    And T2.Name = MyTable.Name
                )
Where ( Value Is Null Or Value = '' )
    And Exists  (
                Select 1
                From MyTable As T3
                Where T3.Id <> MyTable.Id
                    And T3.Name = MyTable.Name
                )
UPDATE financialyear
   SET firstsemfrom = dt2.firstsemfrom,
       firstsemto = dt2.firstsemto,
       secondsemfrom = dt2.secondsemfrom,
       secondsemto = dt2.secondsemto
  from financialyear dt2
 WHERE financialyear.financialyearkey = 141
   AND dt2.financialyearkey = 140
UPDATE t SET t.VALUE = t1.VALUE

FROM data_table t,

(
  
SELECT DISTINCT ID, NAME, VALUE
    FROM data_table
    WHERE VALUE IS NOT NULL AND VALUE != ''

) t1

WHERE t.ID = t1.ID

AND t.NAME = t1.NAME

다른 행의 데이터를 사용하여 새 행을 삽입해야 하는 경우

    insert into ORDER_ITEM select * from ORDER_ITEM where ITEM_NUMBER =123;

언급URL : https://stackoverflow.com/questions/5574434/update-row-with-data-from-another-row-in-the-same-table

반응형