복붙노트

[SQL] MySQL은 어떻게 행을 복사하지만 몇 가지 필드를 변경하려면?

SQL

MySQL은 어떻게 행을 복사하지만 몇 가지 필드를 변경하려면?

내가 복사 할 것이라고 많은 수의 행을 가지고,하지만 난 하나 개의 필드를 변경해야합니다.

나는 사본에 원하는 행을 선택할 수 있습니다 :

select * from Table where Event_ID = "120"

지금은 모든 행을 복사하고 내가이 작업을 수행 할 수있는 방법 (155)에 EVENT_ID을 설정하는 동안 새 행을 만들려면?

해결법

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

    1.

    INSERT INTO Table
              ( Event_ID
              , col2
               ...
              )
         SELECT "155"
              , col2
               ...
          FROM Table WHERE Event_ID = "120"
    

    여기에서, COL2는 ... 당신의 테이블의 나머지 열 (EVENT_ID 이외의 것)를 나타냅니다.

  2. ==============================

    2.이것은 당신이 당신의 테이블에 여러 필드가 그냥 필요한 것들을 입력 한 모든 필드를 입력에서 손가락 경련을받지 않으 솔루션입니다 :)

    이것은 당신이 당신의 테이블에 여러 필드가 그냥 필요한 것들을 입력 한 모든 필드를 입력에서 손가락 경련을받지 않으 솔루션입니다 :)

    어떻게 일부 필드는 서로 다른 값을 갖는, 같은 테이블에 일부 행을 복사하는 방법 :

    귀하의 코드 :

    CREATE table temporary_table AS SELECT * FROM original_table WHERE Event_ID="155";
    
    UPDATE temporary_table SET Event_ID="120";
    
    UPDATE temporary_table SET ID=NULL
    
    INSERT INTO original_table SELECT * FROM temporary_table;
    
    DROP TABLE temporary_table
    

    일반 시나리오 코드 :

    CREATE table temporary_table AS SELECT * FROM original_table WHERE <conditions>;
    
    UPDATE temporary_table SET <fieldx>=<valuex>, <fieldy>=<valuey>, ...;
    
    UPDATE temporary_table SET <auto_inc_field>=NULL;
    
    INSERT INTO original_table SELECT * FROM temporary_table;
    
    DROP TABLE temporary_table
    

    간체 / 응축 코드 :

    CREATE TEMPORARY TABLE temporary_table AS SELECT * FROM original_table WHERE <conditions>;
    
    UPDATE temporary_table SET <auto_inc_field>=NULL, <fieldx>=<valuex>, <fieldy>=<valuey>, ...;
    
    INSERT INTO original_table SELECT * FROM temporary_table;
    

    임시 테이블 사용의 생성과 임시 세션이 종료 (@ ar34z 같은 제안) 때 자동으로 삭제됩니다 키워드.

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

    3.foo는 바 :하자 당신의 테이블이 다른 두 열이 말한다

    foo는 바 :하자 당신의 테이블이 다른 두 열이 말한다

    INSERT INTO Table (foo, bar, Event_ID)
    SELECT foo, bar, "155"
      FROM Table
     WHERE Event_ID = "120"
    
  4. ==============================

    4.당신은 당신의 테이블의 열 부하가 있고 같은 임시 테이블을 사용하여 작업을 수행 할 수 있습니다 각각을 입력하지 않으려면,

    당신은 당신의 테이블의 열 부하가 있고 같은 임시 테이블을 사용하여 작업을 수행 할 수 있습니다 각각을 입력하지 않으려면,

    SELECT *
    INTO #Temp
    FROM Table WHERE Event_ID = "120"
    GO
    
    UPDATE #TEMP
    SET Column = "Changed"
    GO
    
    INSERT INTO Table
    SELECT *
    FROM #Temp
    
  5. ==============================

    5.이봐, 어떻게 모든 필드, 다른 동일한 값 + 무언가에 변화의 하나를 복사하는 방법에 대한.

    이봐, 어떻게 모든 필드, 다른 동일한 값 + 무언가에 변화의 하나를 복사하는 방법에 대한.

    INSERT INTO Table (foo, bar, Event_ID)
    SELECT foo, bar, Event_ID+"155"
      FROM Table
     WHERE Event_ID = "120"
    

    ??????????

  6. ==============================

    6.긴 EVENT_ID이 정수만큼,이 작업을 수행 :

    긴 EVENT_ID이 정수만큼,이 작업을 수행 :

    INSERT INTO Table (foo, bar, Event_ID)
    SELECT foo, bar, (Event_ID + 155)
      FROM Table
    WHERE Event_ID = "120"
    
  7. from https://stackoverflow.com/questions/2783150/mysql-how-to-copy-rows-but-change-a-few-fields by cc-by-sa and MIT license