[SQL] MySQL은 어떻게 행을 복사하지만 몇 가지 필드를 변경하려면?
SQLMySQL은 어떻게 행을 복사하지만 몇 가지 필드를 변경하려면?
내가 복사 할 것이라고 많은 수의 행을 가지고,하지만 난 하나 개의 필드를 변경해야합니다.
나는 사본에 원하는 행을 선택할 수 있습니다 :
select * from Table where Event_ID = "120"
지금은 모든 행을 복사하고 내가이 작업을 수행 할 수있는 방법 (155)에 EVENT_ID을 설정하는 동안 새 행을 만들려면?
해결법
-
==============================
1.
INSERT INTO Table ( Event_ID , col2 ... ) SELECT "155" , col2 ... FROM Table WHERE Event_ID = "120"
여기에서, COL2는 ... 당신의 테이블의 나머지 열 (EVENT_ID 이외의 것)를 나타냅니다.
-
==============================
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.foo는 바 :하자 당신의 테이블이 다른 두 열이 말한다
foo는 바 :하자 당신의 테이블이 다른 두 열이 말한다
INSERT INTO Table (foo, bar, Event_ID) SELECT foo, bar, "155" FROM Table WHERE Event_ID = "120"
-
==============================
4.당신은 당신의 테이블의 열 부하가 있고 같은 임시 테이블을 사용하여 작업을 수행 할 수 있습니다 각각을 입력하지 않으려면,
당신은 당신의 테이블의 열 부하가 있고 같은 임시 테이블을 사용하여 작업을 수행 할 수 있습니다 각각을 입력하지 않으려면,
SELECT * INTO #Temp FROM Table WHERE Event_ID = "120" GO UPDATE #TEMP SET Column = "Changed" GO INSERT INTO Table SELECT * FROM #Temp
-
==============================
5.이봐, 어떻게 모든 필드, 다른 동일한 값 + 무언가에 변화의 하나를 복사하는 방법에 대한.
이봐, 어떻게 모든 필드, 다른 동일한 값 + 무언가에 변화의 하나를 복사하는 방법에 대한.
INSERT INTO Table (foo, bar, Event_ID) SELECT foo, bar, Event_ID+"155" FROM Table WHERE Event_ID = "120"
??????????
-
==============================
6.긴 EVENT_ID이 정수만큼,이 작업을 수행 :
긴 EVENT_ID이 정수만큼,이 작업을 수행 :
INSERT INTO Table (foo, bar, Event_ID) SELECT foo, bar, (Event_ID + 155) FROM Table WHERE Event_ID = "120"
from https://stackoverflow.com/questions/2783150/mysql-how-to-copy-rows-but-change-a-few-fields by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 그룹으로의 실행 순서 무엇 갖는 및 Where 절 SQL 서버에? (0) | 2020.05.06 |
---|---|
[SQL] SQL 서버 루프 - 레코드 집합을 통해 내가 루프를 어떻게 (0) | 2020.05.06 |
[SQL] SQL Server의 중첩 된 경우 문 로직을 수행하는 가장 좋은 방법은 (0) | 2020.05.06 |
[SQL] 어떻게 MySQL은 현재 날짜 및 시간을 얻으려면? (0) | 2020.05.06 |
[SQL] 결과가 반환 SQL은 "여기서하지 하위 쿼리 선택" (0) | 2020.05.06 |