복붙노트

[SQL] 서로 데이터를 하나 개의 테이블을 업데이트

SQL

서로 데이터를 하나 개의 테이블을 업데이트

1 번 테이블:

id    name    desc
-----------------------
1     a       abc
2     b       def
3     c       adf

표 2 :

id    name    desc
-----------------------
1     x       123
2     y       345

어떻게 표 2의 이름과 내림차순이 동일한 ID를 사용하여 표 1을 업데이트 할 수있는 SQL 업데이트 쿼리를 실행합니까? 내가 얻을 것 최종 결과는 그래서

1 번 테이블:

id    name    desc
-----------------------
1     x       123
2     y       345
3     c       adf

이는 방법을 위해 수행 할 수 있습니다 :

해결법

  1. ==============================

    1.MySQL 용 :

    MySQL 용 :

    UPDATE table1 JOIN table2 
        ON table1.id = table2.id
    SET table1.name = table2.name,
        table1.`desc` = table2.`desc`
    

    SQL Server의 경우 :

    UPDATE   table1
    SET table1.name = table2.name,
        table1.[desc] = table2.[desc]
    FROM table1 JOIN table2 
       ON table1.id = table2.id
    
  2. ==============================

    2.오라클 11g R2 :

    오라클 11g R2 :

    create table table1 (
      id number,
      name varchar2(10),
      desc_ varchar2(10)
    );
    
    create table table2 (
      id number,
      name varchar2(10),
      desc_ varchar2(10)
    );
    
    insert into table1 values(1, 'a', 'abc');
    insert into table1 values(2, 'b', 'def');
    insert into table1 values(3, 'c', 'ghi');
    
    insert into table2 values(1, 'x', '123');
    insert into table2 values(2, 'y', '456');
    
    merge into table1 t1
    using (select * from table2) t2
    on (t1.id = t2.id)
    when matched then update set t1.name = t2.name, t1.desc_ = t2.desc_;
    
    select * from table1;
    
            ID NAME       DESC_
    ---------- ---------- ----------
             1 x          123
             2 y          456
             3 c          ghi
    

    업데이트 문 내부에 가입과 함께 - 오라클은 참조하십시오.

  3. ==============================

    3.

    UPDATE table1
    SET 
    `ID` = (SELECT table2.id FROM table2 WHERE table1.`name`=table2.`name`)
    
  4. ==============================

    4.다음 코드를 사용해보십시오. 그것은 나를 위해 노력하고 있습니다 ....

    다음 코드를 사용해보십시오. 그것은 나를 위해 노력하고 있습니다 ....

    UPDATE TableOne 
    SET 
    field1 =(SELECT TableTwo.field1 FROM TableTwo WHERE TableOne.id=TableTwo.id),
    field2 =(SELECT TableTwo.field2 FROM TableTwo WHERE TableOne.id=TableTwo.id)
    WHERE TableOne.id = (SELECT  TableTwo.id 
                                 FROM   TableTwo 
                                 WHERE  TableOne.id = TableTwo.id) 
    
  5. ==============================

    5.ID에 따라 표 2와 표를 업데이트 쿼리의 다음 블록을 사용합니다 :

    ID에 따라 표 2와 표를 업데이트 쿼리의 다음 블록을 사용합니다 :

    UPDATE Table1, Table2 
    SET Table1.DataColumn= Table2.DataColumn
    where Table1.ID= Table2.ID;
    

    이이 문제를 해결하기위한 가장 쉽고 빠른 방법입니다.

  6. from https://stackoverflow.com/questions/5036918/update-one-table-with-data-from-another by cc-by-sa and MIT license